日期:2014-05-16  浏览次数:20890 次

如何把group by后的结果分着列出来?
有表,有查询语句如斯者:

SQL code

CREATE TABLE tbl
(
    id    INT,
    time     DATE
);

INSERT INTO tbl(id, time) VALUES(1, '2009-06-07'), (1, '2009-06-07'), (1, '2009-06-07'),
(2, '2009-06-07'), (3, '2009-06-07'), (3, '2009-06-07'),
(3, '2009-06-07'), (1, '2009-06-08'), (2, '2009-06-08'), 
(2, '2009-06-08'), (4, '2009-06-08'), (5, '2009-06-08');

select id, time, count(id) from tbl group by id, time order by time desc;
select max(id) from tbl group by time;
select count(id) from tbl group by time;




查询语句中只要有了group by, 其结果都是基于group by后的一个个小区间的统计。
可以统计各个小区间结果集的个数,最大值和最小值等。

但是现在不知道如何把group by后的小区间,分着列出来!


------解决方案--------------------
select * from tbl order by time,id
------解决方案--------------------
楼主要的就是像excel的分类统计功能。既要有明细,又要有小计
------解决方案--------------------
理解基本正确
在执行过程中分如下几步: 
1、 从表中先筛选出id>5的所有记录;
2、将相同的id, time合并成一条记录,在临时表中计算count(id);
3、生成SELECT id, time, count(id)内容
4、 进行排序order by time desc 
5、 列出结果
------解决方案--------------------
楼主呢……有点不知你所云……
------解决方案--------------------
越说越乱了……
------解决方案--------------------


google 中你输入 数据库系统概论 会有一大堆,可以说是数据库经典教材。
------解决方案--------------------
楼主是不是就像知道group by的运行机制啊?或者说是如何分组运行的啊?
------解决方案--------------------
看晕了