oracle数据库的分组查询语句,主要是根据一个字段,使用关键字group
成都创新互联专业为企业提供介休网站建设、介休做网站、介休网站设计、介休网站制作等企业网站建设、网页设计与制作、介休企业网站模板建站服务,十多年介休做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
by来分组,如下代码:
select to_char(date_column, 'yyyy-Q'),count(*)
from xxx
where date_column between '01-Jan-2007' and '31-Dec-2009'
group by to_char(date_column, 'yyyy-Q')//分组查询
oracle用group分组查询数据最小的一条表中字段phonenumber,score,examtime
要取出时间段中phonenumber的score最大并且examtime最小的记录,用max和min取的值都不是正确的记录值,用排序子查询的方法可以取到数据最小的一条。
按照你的说法,我的理解的如果不放group by那么可能出现两行完全重复的数据,是这个意思吧。
不能放day,因为day是在这个sql中起的一个别名,只有在查询完成后day才有效果(比如在having中们就可以用),但是在group by中查询并没有完成,所以day没有用。
这个有一个办法,就是你把day前面的那一串(也就是别名day表示的那串round函数中的内容)整个放在groupby的后面。
还有一个办法不一定好用(这个方法有个前提,就是每个分组的最后day结果只有一个,而不是可能有好几个),你可以在round前面加一个max或者min,这样就是聚合函数了(也就是说不需要在groupby后面加day的那一串了),如果完全相同,那么可能只显示一个(可能,我忘了如果存在相等的最大值时,是怎么样的一个结果了,你可以试试),这样就不需要大改动,就能完成了、
select a.group,(a.date-b.date)*24*60*60 from (select group,date from table where flag=1) a
left outer join (select group,date from table a where flag=4) b on a.group=b.group
你这个不需要分组