Oracle按日期,月份和年份分组

时间:2016-03-30 23:57:43

标签: sql oracle

我有以下查询,以单日显示每个国家/地区组的计数,例如20160101.

如何修改以下查询,以便按日期,月份和年份进行分组?

请注意目前正在处理Oracle数据库。

非常感谢提前。

Select count(1), country_of_sale, substr(datefield,1,8) AS datefield1
from table 
where country_of_sale IN (‘USA’,’EUROPE’,’ASIA’)
group by country_of_sale, substr(datefield,1,8)
order by substr(datefield,1,8)

2 个答案:

答案 0 :(得分:1)

如果datefield是字符串,则只需使用substr()。年月和月份:

Select count(1), country_of_sale, substr(datefield, 1, 6) AS yyyymm
from table 
where country_of_sale IN ('USA', 'EUROPE', 'ASIA')
group by country_of_sale, substr(datefield, 1, 6)
order by substr(datefield, 1, 6);

如果datefield是日期,请使用to_char()

Select count(1), country_of_sale, to_char(datefield, 'YYYY-MM') AS yyyymm
from table 
where country_of_sale IN ('USA', 'EUROPE', 'ASIA')
group by country_of_sale, to_char(datefield, 'YYYY-MM')
order by to_char(datefield, 'YYYY-MM');

答案 1 :(得分:0)

使用专用功能会很聪明。使用字符串可以工作,但速度较慢,并且还会假设您的日期/时间格式等等。

Oracle具有TRUNC功能,其中"向下舍入"日期,日期,月份等。