现在的位置: 首页 > 综合 > 正文

SQL习题

2012年03月07日 ⁄ 综合 ⁄ 共 3677字 ⁄ 字号 评论关闭
  1. 1.   
  2. ------------------------------------------------------------   
  3. *   
  4. 1   
  5. 2   
  6. 3   
  7. 5   
  8. 5   
  9. 7   
  10. 7   
  11. 8   
  12. 9   
  13. 只显示,5,5,7,7出来,不显示别的。   
  14. */   
  15.   
  16. /*   
  17.     测试数据   
  18. */   
  19.   
  20. Create Table Num   
  21. (   
  22.     num number,   
  23. )   
  24. ;   
  25.   
  26. insert into Num values(1);   
  27. insert into Num values(2);   
  28. insert into Num values(3);   
  29. insert into Num values(5);   
  30. insert into Num values(5);   
  31. insert into Num values(7);   
  32. insert into Num values(7);   
  33. insert into Num values(8);   
  34. insert into Num values(9);   
  35.   
  36. /*   
  37. answer:   
  38.   
  39. select num from num   
  40. where num in    
  41. (select num from num group by num having count(num) > 1);   
  42. */   
  43. 2.    
  44. -------------------------------------------------------------   
  45.   
  46. Create table Table_A   
  47. (   
  48.        UserType varchar2(50),   
  49.        LoginDate varchar2(50),   
  50.        Address varchar2(50),   
  51.        IsCertified varchar2(50)   
  52. );   
  53.   
  54. insert into Table_A values('管理员','20050510','城市','是');   
  55. insert into Table_A values('一般用户','20050515','郊区','是');   
  56. insert into Table_A values('普通管理员','20050610','郊区','是');   
  57. insert into Table_A values('一般用户','20050622','城市','是');   
  58. insert into Table_A values('普通管理员','20050620','郊区','是');   
  59.   
  60. /*   
  61. select * from Table_A   
  62.   
  63. 管理员   普通管理员   一般用户          
  64.   1          2           2   
  65. */   
  66.   
  67. /*   
  68. answer:   
  69.   
  70. select (select count(*) from table_a where usertype = '管理员') 管理员,   
  71. (select count(*) from table_a where userType = '普通管理员') 普通管理员,   
  72. (select count(*) from table_a where userType = '一般用户') 一般用户   
  73. from table_a   
  74. where rownum < 2;   
  75. */   
  76.   
  77. 3.   
  78.   
  79. ---------------------------------------------------------   
  80.   
  81. Create table Employee   
  82. (   
  83.        empID number,   
  84.        empName varchar2(20),   
  85.        SB varchar2(10),   
  86.        XB varchar2(10),   
  87.        eDate date  
  88. );   
  89.   
  90.   
  91.   
  92. insert into Employee values(1,'大傻''迟到','早退',date'2005-10-17');   
  93. insert into Employee values(2,'二傻','按时','早退',Date'2005-10-17');   
  94. insert into Employee values(4,'大傻','按时','早退',Date'2005-10-16');   
  95. insert into Employee values(5,'二傻','按时','按时',Date'2005-10-17');   
  96.   
  97. select * from Employee   
  98.   
  99. /*   
  100. 用户名  月份  上班迟到次数  下班早退次数   
  101. 大傻     10     1            2   
  102. 二傻     10     0            1   
  103. */   
  104.   
  105. /*   
  106. answer:   
  107.   
  108. select distinct empname 用户名,extract(month from edate) 月份,   
  109. (select count(*) from employee e2 where sb = '迟到' and e1.empname = e2.empname) 迟到次数,   
  110. (select count(*) from employee e2 where xb = '早退' and e1.empname = e2.empname) 早退次数    
  111. from employee e1   
  112. */   
  113. 3.   
  114. 表名 销售表:   
  115.   
  116.    NO ,  NO2,  数量   日期   
  117.   1234 567890  33.5  2004-12-21   
  118.   1234 598701  44.8  2004-11-21   
  119.   1234 598701  45.2  2004-10-01   
  120.   1234 567890  66.5  2004-9-21   
  121.   3456 789065  22.5   2004-10-01   
  122.   3456 789065  77.5   2004-10-27   
  123.   3456 678901  48.5   2004-12-21   
  124.   
  125.   按月统计销售表中货物的销售量数   
  126. 查询结果如下:   
  127.   No, No2 ,   九月,  十月,十一月,十二月   
  128.  1234,567890,  66.5 ,  0 ,  0  ,  33.5   
  129.  1234,598701,   0   , 45.2, 44.8,  0   
  130.  3456,789065,  0  , 100,  0   , 0   
  131.  3456,678901,  0 ,    0,   0  , 48.5   
  132.   
  133.   
  134. create table sales   
  135. (   
  136.     empid number,   
  137.     proid number,   
  138.     num   number(10,2),   
  139.     saDate date  
  140. )   
  141. ;   
  142. insert into sales values(1234,567890,33.5,date'2004-12-21')   
  143. ;   
  144. insert into sales values(1234,598701,44.8,date'2004-11-21')   
  145. ;   
  146. insert into sales values(1234,598701,45.2,date'2004-10-01')   
  147. ;   
  148. insert into sales values(1234,567890,66.5,date'2004-9-21')   
  149. ;   
  150. insert into sales values(3456,789065,22.5,date'2004-10-01')   
  151. ;   
  152. insert into sales values(3456,789065,77.5,date'2004-10-27')   
  153. ;   
  154. insert into sales values(3456,678901,48.5,date'2004-12-21')   
  155. ;   
  156. Result(答案):   
  157. select empid,proid,sum(case when extract(month from sadate)='9' then num else 0 end) 九月,sum(case when extract(month from sadate)='10' then num else 0 end) 十月,sum(case when extract(month from sadate)='11' then num else 0 end) 十一月,sum(case when extract(month from sadate)='12' then num else 0 end) 十二月   
  158. from sales group by empid,proid;  

抱歉!评论已关闭.