Sql 根据另一列聚合结果

Sql 根据另一列聚合结果,sql,oracle,Sql,Oracle,我有一个SQL查询: SELECT COUNT(*), EXTRACT(year from DAY_DATE) FROM ( INNER_SELECT_QUERY ) GROUP BY DAY_DATE; 返回的结果如下所示: 4630 2013 7348 2014 9408 2013 5953 2013 7261 2015 5767 2013 9218 2013 14989 2013 11277 2013 如何按不同年份汇总结果?i、 e

我有一个SQL查询:

SELECT COUNT(*), EXTRACT(year from DAY_DATE) FROM
( INNER_SELECT_QUERY )
GROUP BY DAY_DATE;
返回的结果如下所示:

4630    2013
7348    2014
9408    2013
5953    2013
7261    2015
5767    2013
9218    2013
14989   2013
11277   2013
如何按不同年份汇总结果?i、 e

22324   2015
34242   2014
23242   2013
54353   2012
我的意思是不重复的年份,所有与年份相关的结果都是汇总的?

提取()置于
组中,按

SELECT COUNT(*), EXTRACT(year from DAY_DATE)
FROM ( INNER_SELECT_QUERY )
GROUP BY EXTRACT(year from DAY_DATE) ;
提取()

SELECT COUNT(*), EXTRACT(year from DAY_DATE)
FROM ( INNER_SELECT_QUERY )
GROUP BY EXTRACT(year from DAY_DATE) ;

在“内部选择”中执行提取(从日期算起的年份),或者只按提取分组(从日期算起的年份)。这是一个需要测试的长查询。那么,像@Gordon Linoff回答的那样在外部SQL中使用
EXTRACT(从日期算起的年份)
可以吗?许多dbms产品都可以,但ANSI SQL标准不行。@Kamaci:是的。您按
DAY\u DATE
进行分组,这毫无意义,因为您不希望每天都有结果记录。您必须按
提取(从日期算起的年份)
进行分组,就像Gordon建议的那样。@jarlh:为什么不呢?自SQL99起,AFAIK
EXTRACT
是标准的一部分。并且能够通过一个表达式进行分组也应该是标准的。我错了吗?在“内部选择”中执行提取(从日期开始的年份),或者可能只是按提取分组(从日期开始的年份)。这是一个需要测试的长查询。那么,像@Gordon Linoff回答的那样在外部SQL中使用
EXTRACT(从日期算起的年份)
可以吗?许多dbms产品都可以,但ANSI SQL标准不行。@Kamaci:是的。您按
DAY\u DATE
进行分组,这毫无意义,因为您不希望每天都有结果记录。您必须按
提取(从日期算起的年份)
进行分组,就像Gordon建议的那样。@jarlh:为什么不呢?自SQL99起,AFAIK
EXTRACT
是标准的一部分。并且能够通过一个表达式进行分组也应该是标准的。我错了吗?