1. 程式人生 > >Oracle按時間統計sql

Oracle按時間統計sql

1.統計某天24小時中,每個小時段的訂單數:

select
      count(*),
       to_char(to_date(create_dt, 'yyyy-mm-dd hh24:mi:ss'), 'yyyy-mm-dd hh24')
  from b2c_order_head
   where create_dt like '2014-02-06%'
 group by to_char(to_date(create_dt, 'yyyy-mm-dd hh24:mi:ss'), 'yyyy-mm-dd hh24')
  order by to_char(to_date(create_dt, 'yyyy-mm-dd hh24:mi:ss'),
                  'yyyy-mm-dd hh24')
				  


注意:

1.其中create_dt和'yyyy-mm-dd hh24:mi:ss' 必須是對應的

2.select中除了統計欄位count(...),其他欄位必須與group by的欄位一致,

3.order by 總是寫到SQL的最後,且分組查詢中order by的欄位只能是select的欄位

4.分組前過濾用where,放到from 後,分組後過濾用having,放到 group by 後

2.統計某天24小時中,個小時段的訂單金額:
select sum(order_amt),to_char(to_date(create_dt, 'yyyy-mm-dd hh24:mi:ss'), 'yyyy-mm-dd hh24')
from b2c_order_head
 where create_dt like '2014-02-06%'
 group by to_char(to_date(create_dt, 'yyyy-mm-dd hh24:mi:ss'),
                  'yyyy-mm-dd hh24')
 order by to_char(to_date(create_dt, 'yyyy-mm-dd hh24:mi:ss'),
                  'yyyy-mm-dd hh24')