按日期分组

A表有 customer(String),createTime(DATE YYYY-MM-DD HH24:MI:SS),totalQty(Double)三个字段

假设我想知道所有客户每天(YYYY-MM-DD)totalQty的总数,应该如何做呢?

 

select to_char(createTime,'yyyy-mm-dd') createTime, sum(totalQty) otalQty from A group by to_char(createTime,'yyyy-mm-dd')

 

 

--以下为部分示例.

按时间分组求和

ID      INPUT_DATE              NUM
--      ------------------      ---
1    2007-9-29 9:52:53    10
2    2007-9-29 9:53:16    20
3    2007-9-29 9:53:32    30
4    2007-9-29 9:53:41    40
5    2007-9-29 9:53:52    50
6    2007-9-28 9:00:00    60
7    2007-9-28 9:01:00    70
8    2007-9-28 9:02:00    80
9    2007-9-28 10:00:00    90

1、对上述数据按日期求和,结果如下:
日期              NUM
---------- ----------
2007-09-28        300
2007-09-29        150


--sql语句
select to_char(input_date,'yyyy-mm-dd') 日期 , sum(num) num
from jh01
group by to_char(input_date,'yyyy-mm-dd')

--结果
/*

日期              NUM
---------- ----------
2007-09-28        300
2007-09-29        150
2 rows selected
*/

2、对数据按每天每小时求和,结果如下:
日期                 NUM
------------- ----------
2007-09-28 09        210
2007-09-28 10         90
2007-09-29 09        150

--sql语句
select to_char(input_date,'yyyy-mm-dd hh24') 日期 , sum(num) num
from jh01
group by to_char(input_date,'yyyy-mm-dd hh24')

--结果
/*

日期                 NUM
------------- ----------
2007-09-28 09        210
2007-09-28 10         90
2007-09-29 09        150
3 rows selected
*/

3.按日期取num最大值的记录

ID INPUT_DATE NUM
-- ---------- ---
9  2007-09-28 90
5  2007-09-29 50

--sql
select a.id , to_char(a.input_date,'yyyy-mm-dd') input_date,a.num from jh01 a,
(
 
select to_char(input_date,'yyyy-mm-dd') input_date, max(num) num
 
from jh01
 
group by to_char(input_date,'yyyy-mm-dd')
) b
where to_char(a.input_date,'yyyy-mm-dd') = b.input_date and a.num = b.num 

/*
ID INPUT_DATE NUM
-- ---------- ---
9  2007-09-28 90
5  2007-09-29 50
2 rows selected
*/

你可能感兴趣的:(按日期分组)