我有以下查询,以单日显示每个国家/地区组的计数,例如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)
答案 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功能,其中"向下舍入"日期,日期,月份等。