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
*/