欢迎投稿

今日深度:

SQL语句相关概念及练习之基础篇(1)(6)

  1. --题4)输出本月拨打电话次数最多的前三个呼叫员的编号. 
  2.  
  3. --@按呼叫员编号进行分组; 
  4.  
  5. --@计算个呼叫员拨打电话的次数; 
  6.  
  7. --@按呼叫员拨打电话的次数进行降序排序; 
  8.  
  9. --@查询前3条记录中呼叫员的编号。 
  10.  
  11. selecttop3CallerNumber,count(*) 
  12.  
  13. fromT_CallRecords 
  14.  
  15. wheredatediff(month,StartDateTime,getdate())=12--一年前的 
  16.  
  17. groupbyCallerNumber 
  18.  
  19. orderbycount(*)DESC 
  20.  
  21.  
  22.  
  23. --题5)输出所有数据的拨号流水,并且在最后一行添加总呼叫时长: 
  24.  
  25.  
  26.  
  27. --记录呼叫员编号、对方号码、通话时长 
  28.  
  29. --...... 
  30.  
  31. --汇总[市内号码总时长][长途号码总时长] 
  32.  
  33.  
  34.  
  35. --@计算每条记录中通话时长; 
  36.  
  37. --@查询包含不加0号码,即市内号码的记录; 
  38.  
  39. --@计算市内号码通话总时长; 
  40.  
  41. --@查询包含加0号码,即长途号码的记录; 
  42.  
  43. --@计算长途号码通话总时长; 
  44.  
  45. --@联合查询。 
  46.  
  47. select'汇总'as汇总, 
  48.  
  49. convert(varchar(20), 
  50.  
  51. sum(( 
  52.  
  53. case 
  54.  
  55. whenTellNumbernotlike'0%'thendatediff(second,StartDateTime,EndDateTime) 
  56.  
  57. else0 
  58.  
  59. end 
  60.  
  61. )))as市内通话, 
  62.  
  63. sum(( 
  64.  
  65. case 
  66.  
  67. whenTellNumberlike'0%'thendatediff(second,StartDateTime,EndDateTime) 
  68.  
  69. else0 
  70.  
  71. end 
  72.  
  73. ))as长途通话 
  74.  
  75. fromT_CallRecords 
  76.  
  77. unionall 
  78.  
  79. selectCallerNumber,TellNumber,datediff(second,StartDateTime,EndDateTime)as通话时长 
  80.  
  81. fromT_CallRecords 
  82.  
  83.  
  84.  
  85.  
  86.  
  87. --客户和订单表的练习 
  88.  
  89. --建立一个客户表 
  90.  
  91. createtableT_Customers( 
  92.  
  93. idintnotnull, 
  94.  
  95. namenvarchar(50)collatechinese_prc_ci_asnull, 
  96.  
  97. ageintnull 
  98.  
  99. ); 
  100.  
  101. insertT_Customers(id,name,age)values(1,N'tom',10); 
  102.  
  103. insertT_Customers(id,name,age)values(2,N'jerry',15); 
  104.  
  105. insertT_Customers(id,name,age)values(3,N'john',22); 
  106.  
  107. insertT_Customers(id,name,age)values(4,N'lily',18); 
  108.  
  109. insertT_Customers(id,name,age)values(5,N'lucy',18); 
  110.  
  111.  
  112.  
  113. select*fromT_Customers 
  114.  
  115.  
  116.  
  117. --建立一个销售单表 
  118.  
  119. createtableT_Orders( 
  120.  
  121. idintnotnull, 
  122.  
  123. billnonvarchar(50)collatechinese_prc_ci_asnull, 
  124.  
  125. customeridintnull); 
  126.  
  127.  
  128.  
  129. insertT_Orders(id,billno,customerid)values(1,N'001',1) 
  130.  
  131. insertT_Orders(id,billno,customerid)values(2,N'002',1) 
  132.  
  133. insertT_Orders(id,billno,customerid)values(3,N'003',3) 
  134.  
  135. insertT_Orders(id,billno,customerid)values(4,N'004',2) 
  136.  
  137. insertT_Orders(id,billno,customerid)values(5,N'005',2) 
  138.  
  139. insertT_Orders(id,billno,customerid)values(6,N'006',5) 
  140.  
  141. insertT_Orders(id,billno,customerid)values(7,N'007',4) 
  142.  
  143. insertT_Orders(id,billno,customerid)values(8,N'008',5) 
  144.  
  145.  
  146.  
  147. select*fromT_Orders 
  148.  
  149.  
  150.  
  151. selecto.billno,c.name,c.age 
  152.  
  153. fromT_OrdersasojoinT_Customersascono.customerid=c.id 
  154.  
  155. --查询订单号,顾客名字,顾客年龄 
  156.  
  157.  
  158.  
  159. selecto.billno,c.name,c.age 
  160.  
  161. fromT_OrdersasojoinT_Customersascono.customerid=c.id 
  162.  
  163. wherec.age>15 
  164.  
  165. --显示年龄大于15岁的顾客姓名、年龄和订单号 
  166.  
  167.  
  168.  
  169. selecto.billno,c.name,c.age 
  170.  
  171. fromT_OrdersasojoinT_Customersascono.customerid=c.id 
  172.  
  173. wherec.age>(selectavg(age)fromT_Customers) 
  174.  
  175. --显示年龄大于平均年龄的顾客姓名、年龄和订单号 
  176.  
  177.  
  178.  
  179. --子查询练习 
  180.  
  181. --新建一个数据库,名为BookShop 
  182.  
  183. CreatedatabaseBookShop 
  184.  
  185.  
  186.  
  187. --创建4张表 
  188.  
  189. createtableT_Reader(FIdINTNOTNULL,FNamevarchar(50),FYearOfBirthINT,FCityvarchar(50),FProvincevarchar(50),FYearOfJoinINT); 
  190.  
  191. createtableT_Book(FIdintnotnull,FNamevarchar(50),FYearPublishedint,FCategoryIdint); 
  192.  
  193. createtableT_Category(FIdintnotnull,FNamevarchar(50)); 
  194.  
  195. createtableT_ReaderFavorite(FCategoryIdint,FReaderIdint); 
  196.  
  197.  
  198.  
  199. --分别为4张表插入数据 
  200.  
  201. insertintoT_Category(FId,FName)values(1,'Story'); 
  202.  
  203. insertintoT_Category(FId,FName)values(2,'History'); 
  204.  
  205. insertintoT_Category(FId,FName)values(3,'Theory'); 
  206.  
  207. insertintoT_Category(FId,FName)values(4,'Technology'); 
  208.  
  209. insertintoT_Category(FId,FName)values(5,'Art'); 
  210.  
  211. insertintoT_Category(FId,FName)values(6,'Philosophy'); 
  212.  
  213.  
  214.  
  215. insertintoT_Reader(FId,FName,FYearOfBirth,FCity,FProvince,FyearOfJoin)values(1,'Tom',1979,'TangShan','Hebei',2003); 
  216.  
  217. insertintoT_Reader(FId,FName,FYearOfBirth,FCity,FProvince,FyearOfJoin)values(2,'Sam',1981,'LangFang','Hebei',2001); 
  218.  
  219. insertintoT_Reader(FId,FName,FYearOfBirth,FCity,FProvince,FyearOfJoin)values(3,'Jerry',1966,'DongGuan','GuangDong',1995); 
  220.  
  221. insertintoT_Reader(FId,FName,FYearOfBirth,FCity,FProvince,FyearOfJoin)values(4,'Lily',1972,'JiaXing','ZheJiang',2005); 
  222.  
  223. insertintoT_Reader(FId,FName,FYearOfBirth,FCity,FProvince,FyearOfJoin)values(5,'Marry',1985,'BeiJing','BeiJing',1999); 
  224.  
  225. insertintoT_Reader(FId,FName,FYearOfBirth,FCity,FProvince,FyearOfJoin)values(6,'Kelly',1977,'ZhuZhou','HuNan',1995); 
  226.  
  227. insertintoT_Reader(FId,FName,FYearOfBirth,FCity,FProvince,FyearOfJoin)values(7,'Tim',1982,'YongZhou','HuNan',2001); 
  228.  
  229. insertintoT_Reader(FId,FName,FYearOfBirth,FCity,FProvince,FyearOfJoin)values(8,'King',1979,'JiNan','ShanDong',1997); 
  230.  
  231. insertintoT_Reader(FId,FName,FYearOfBirth,FCity,FProvince,FyearOfJoin)values(11,'John',1979,'QingDao','ShanDong',2003); 
  232.  
  233. insertintoT_Reader(FId,FName,FYearOfBirth,FCity,FProvince,FyearOfJoin)values(9,'Lucy',1978,'LuoYang','HeNan',1996); 
  234.  
  235. insertintoT_Reader(FId,FName,FYearOfBirth,FCity,FProvince,FyearOfJoin)values(10,'July',1983,'ZhuMaDian','HeNan',1999); 
  236.  
  237. insertintoT_Reader(FId,FName,FYearOfBirth,FCity,fProvince,FyearOfJoin)values(12,'Fige',1981,'JinCheng','ShanXi',2003); 
  238.  
  239.  
  240.  
  241. insertintoT_Book(FId,FName,FYearPublished,FCategoryId)values(1,'AboutJ2EE',2005,4); 
  242.  
  243. insertintoT_Book(FId,FName,FYearPublished,FCategoryId)values(2,'LearningHibernate',2003,4); 
  244.  
  245. insertintoT_Book(FId,FName,FYearPublished,FCategoryId)values(3,'TowCites',1999,1); 
  246.  
  247. insertintoT_Book(FId,FName,FYearPublished,FCategoryId)values(4,'JaneEyre',2001,1); 
  248.  
  249. insertintoT_Book(FId,FName,FYearPublished,FCategoryId)values(5,'OliverTwist',2002,1); 
  250.  
  251. insertintoT_Book(FId,FName,FYearPublished,FCategoryId)values(6,'HistoryofChina',1982,2); 
  252.  
  253. insertintoT_Book(FId,FName,FYearPublished,FCategoryId)values(7,'HistoryofEngland',1860,2); 
  254.  
  255. insertintoT_Book(FId,FName,FYearPublished,FCategoryId)values(8,'HistoryofAmerica',1700,2); 
  256.  
  257. insertintoT_Book(FId,FName,FYearPublished,FCategoryId)values(9,'HistoryofTheVorld',2008,2); 
  258.  
  259. insertintoT_Book(FId,FName,FYearPublished,FCategoryId)values(10,'Atom',1930,3); 
  260.  
  261. insertintoT_Book(FId,FName,FYearPublished,FCategoryId)values(11,'RELATIVITY',1945,3); 
  262.  
  263. insertintoT_Book(FId,FName,FYearPublished,FCategoryId)values(12,'Computer',1970,3); 
  264.  
  265. insertintoT_Book(FId,FName,FYearPublished,FCategoryId)values(13,'Astronomy',1971,3); 
  266.  
  267. insertintoT_Book(FId,FName,FYearPublished,FCategoryId)values(14,'HowTosinging',1771,5); 
  268.  
  269. insertintoT_Book(FId,FName,FYearPublished,FCategoryId)values(15,'DaoDeJing',2001,6); 
  270.  
  271. insertintoT_Book(FId,FName,FYearPublished,FCategoryId)values(16,'ObediencetoAu',1995,6); 
  272.  
  273.  
  274.  
  275.  
  276.  
  277. insertintoT_ReaderFavorite(FCategoryId,FReaderId)values(1,1); 
  278.  
  279. insertintoT_ReaderFavorite(FCategoryId,FReaderId)values(5,2); 
  280.  
  281. insertintoT_ReaderFavorite(FCategoryId,FReaderId)values(2,3); 
  282.  
  283. insertintoT_ReaderFavorite(FCategoryId,FReaderId)values(3,4); 
  284.  
  285. insertintoT_ReaderFavorite(FCategoryId,FReaderId)values(5,5); 
  286.  
  287. insertintoT_ReaderFavorite(FCategoryId,FReaderId)values(1,6); 
  288.  
  289. insertintoT_ReaderFavorite(FCategoryId,FReaderId)values(1,7); 
  290.  
  291. insertintoT_ReaderFavorite(FCategoryId,FReaderId)values(4,8); 
  292.  
  293. insertintoT_ReaderFavorite(FCategoryId,FReaderId)values(6,9); 
  294.  
  295. insertintoT_ReaderFavorite(FCategoryId,FReaderId)values(5,10); 
  296.  
  297. insertintoT_ReaderFavorite(FCategoryId,FReaderId)values(2,11); 
  298.  
  299. insertintoT_ReaderFavorite(FCategoryId,FReaderId)values(2,12); 
  300.  
  301. insertintoT_ReaderFavorite(FCategoryId,FReaderId)values(1,12); 
  302.  
  303. insertintoT_ReaderFavorite(FCategoryId,FReaderId)values(3,1); 
  304.  
  305. insertintoT_ReaderFavorite(FCategoryId,FReaderId)values(1,3); 
  306.  
  307. insertintoT_ReaderFavorite(FCategoryId,FReaderId)values(4,4); 
  308.  
  309.  
  310.  
  311. select*fromT_Book 
  312.  
  313.  
  314.  
  315. select*fromT_Category 
  316.  
  317.  
  318.  
  319. select*fromT_Reader 
  320.  
  321.  
  322.  
  323. select*fromT_ReaderFavorite 
  324.  
  325.  
  326.  
  327. --并列查询 
  328.  
  329. select1asf1,2,(selectMIN(FYearPublished)fromT_Book), 
  330.  
  331. (selectMAX(FYearPublished)fromT_Book)asf4 
  332.  
  333.  
  334.  
  335. --查询入会日期在2001或者2003年的读者信息 
  336.  
  337. select*fromT_Reader 
  338.  
  339. whereFYearOfJoinin(2001,2003) 
  340.  
  341.  
  342.  
  343. --与between...and不同 
  344.  
  345. select*fromT_Reader 
  346.  
  347. whereFYearOfJoinbetween2001and2003 
  348.  
  349.  
  350.  
  351. --查询有书出版的年份入会的读者信息 
  352.  
  353. select*fromT_Reader 
  354.  
  355. whereFYearOfJoinin 
  356.  
  357.  
  358. selectFYearPublishedfromT_Book 
  359.  
  360.  
  361.  
  362.  
  363. --SQLServer2005之后的版本内置函数:ROW_NUMBER(),称为开窗函数,可以进行分页等操作。 
  364.  
  365. selectROW_NUMBER()over(orderbyFSalaryDESC)asRow_Num, 
  366.  
  367. FNumber,FName,FSalary,FAgefromT_Employee 
  368. --特别注意,开窗函数row_number()只能用于select或orderby子句中,不能用于where子句中 
  369.  
  370. --查询第3行到第5行的数据 
  371. select*from 
  372. selectROW_NUMBER()over(orderbyFSalaryDESC)asRow_Num, 
  373. FNumber,FName,FSalary,FAgefromT_Employee 
  374. )ase1 
  375. wheree1.Row_Num>=3ande1.Row_Num<=5 


www.htsjk.Com true http://www.htsjk.com/shujukujc/18792.html NewsArticle --题4)输出本月拨打电话次数最多的前三个呼叫员的编号. --@按呼叫员编号进行分组; --@计算个呼叫员拨打电话的次数; --@按呼叫员拨打电话的次数进行降...
评论暂时关闭