group.sql
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:3k
源码类别:

数据库系统

开发平台:

Unix_Linux

  1. ---------------------------------------------------------------------------
  2. --
  3. -- group.sql-
  4. --    test GROUP BY (with aggregates)
  5. --
  6. --
  7. -- Copyright (c) 1994-5, Regents of the University of California
  8. --
  9. -- $Id: group.sql,v 1.1.1.1 1996/07/09 06:22:30 scrappy Exp $
  10. --
  11. ---------------------------------------------------------------------------
  12. create table G (x int4, y int4, z int4);
  13. insert into G values (1, 2, 6);
  14. insert into G values (1, 3, 7);
  15. insert into G values (1, 3, 8);
  16. insert into G values (1, 4, 9);
  17. insert into G values (1, 4, 10);
  18. insert into G values (1, 4, 11);
  19. insert into G values (1, 5, 12);
  20. insert into G values (1, 5, 13);
  21. select x from G group by x;
  22. select y from G group by y;
  23. select z from G group by z;
  24. select x, y from G group by x, y;
  25. select x, y from G group by y, x;
  26. select x, y, z from G group by x, y, z;
  27. -- mixed target list (aggregates and group columns)
  28. select count(y) from G group by y;
  29. select x, count(x) from G group by x;
  30. select y, count(y), sum(G.z) from G group by y;
  31. select sum(G.x), sum(G.y), z from G group by z;
  32. select y, avg(z) from G group by y;
  33. -- group attr not in target list
  34. select sum(x) from G group by y;
  35. select sum(x), sum(z) from G group by y;
  36. select sum(z) from G group by y;
  37. -- aggregates in expressions
  38. select sum(G.z)/count(G.z), avg(G.z) from G group by y;
  39. -- with qualifications
  40. select y, count(y) from G where z < 11 group by y;
  41. select y, count(y) from G where z > 9 group by y;
  42. select y, count(y) from G where z > 8 and z < 12 group by y;
  43. select y, count(y) from G where y = 4 group by y;
  44. select y, count(y) from G where y > 10 group by y;
  45. -- with order by
  46. select y, count(y) as c from G group by y order by c;
  47. select y, count(y) as c from G group by y order by c, y;
  48. select y, count(y) as c from G where z > 20 group by y order by c;
  49. -- just to make sure we didn't screw up order by
  50. select x, y from G order by y, x;
  51. -- with having
  52. -- HAVING clause is not implemented yet
  53. --select count(y) from G having count(y) > 1
  54. --select count(y) from G group by y having y > 3
  55. --select y from G group by y having y > 3
  56. --select y from G where z > 10 group by y having y > 3
  57. --select y from G group by y having y > 10
  58. --select count(G.y) from G group by y having y > 10
  59. --select y from G where z > 20 group by y having y > 3
  60. create table H (a int4, b int4);
  61. insert into H values (3, 9)
  62. insert into H values (4, 13);
  63. create table F (p int4);
  64. insert into F values (7)
  65. insert into F values (11);
  66. -- joins
  67. select y from G, H where G.y = H.a group by y;
  68. select sum(b) from G, H where G.y = H.a group by y;
  69. select y, count(y), sum(b) from G, H where G.y = H.a group by y;
  70. select a, sum(x), sum(b) from G, H where G.y = H.a group by a;
  71. select y, count(*) from G, H where G.z = H.b group by y;
  72. select z, sum(y) from G, H, F where G.y = H.a and G.z = F.p group by z;
  73. select a, avg(p) from G, H, F where G.y = H.a and G.z = F.p group by a;
  74. -- just aggregates
  75. select sum(x) from G, H where G.y = H.a;
  76. select sum(y) from G, H where G.y = H.a;
  77. select sum(a) from G, H where G.y = H.a;
  78. select sum(b) from G, H where G.y = H.a;
  79. select count(*) from G group by y;
  80. insert into G (y, z) values (6, 14);
  81. insert into G (x, z) values (2, 14);
  82. select count(*) from G;
  83. select count(x), count(y), count(z) from G;
  84. select x from G group by x;
  85. select y, count(*) from G group by y;
  86. -- 
  87. drop table G, H, F;