oracle如何查询 GROUP BY 一年一个月

标签: sql Oracle
发布时间: 2017/4/15 19:06:05
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我使用 Oracle 的 SQL 开发人员。 我本质上是有的图片包含列的表︰

[DATE_CREATED(date),NUM_of_PICTURES(int)]

如果这么做了 select *,我将得到的输出类似于︰

01-May-12    12
02-May-12    15
03-May-12    09
...
...
01-Jun-12    20
...
etc.

我想聚合成每月的数据,而不是每天的图片这些款项。

我试过做些类似的︰

select Month(DATE_CREATED), sum(Num_of_Pictures))
from pictures_table
group by Month(DATE_CREATED);

这将输出一个错误︰

ORA-00904: "MONTH": invalid identifier
00904. 00000 -  "%s: invalid identifier"
*Cause:    
*Action:
Error at Line: 5 Column: 9

Month 函数错了吗

解决方法 1:

我会倾向在输出中包括年。 一种方法︰

select to_char(DATE_CREATED, 'YYYY-MM'), sum(Num_of_Pictures)
from pictures_table
group by to_char(DATE_CREATED, 'YYYY-MM')
order by 1

另一种方式 (更多的标准 SQL):

select extract(year from date_created) as yr, extract(month from date_created) as mon,
       sum(Num_of_Pictures)
from pictures_table
group by extract(year from date_created), extract(month from date_created)
order by yr, mon;

记得的因为你大概想这些顺序,并不能保证由一组后,在返回的行的顺序。

赞助商