1. 程式人生 > >Oracle sql按年、月、周等,分組查詢資料

Oracle sql按年、月、周等,分組查詢資料

oracle sql 按年、月、周、日,分組查詢統計資料:

1、SQL語句如下

select sum(count),to_char(to_date(ext2,'YYYY-MM-dd'),'iw') from CMS_INDEXPV where site_id = '0002'
 and ext2 is not null group by to_char(to_date(ext2,'YYYY-MM-dd'),'iw') order by 
 to_char(to_date(ext2,'YYYY-MM-dd'),'iw');

其中引數意思如下,
dd—————–日(可以傳遞MM-dd,方便排序);
iw —————–周;
MM—————月;
YYYY————–年;

後臺程式碼可以根據傳入不同的引數來獲取不同的統計資料;

Java後臺程式碼如下:

@At("/dateChart")
@Ok("raw")
public String dateChart(@Param("startTime") String startTime,
            @Param("endTime")String endTime,@Param("site")String site){

    /* 生成sql語句,啟動$s表示傳入統計類別的引數,日、周、月等 */
    Sql sql = Sqls.create(" select to_char(to_date(ext2,'YYYY-MM-dd'),'$s'),sum(count) from
     CMS_INDEXPV where site_id = '"
+site+"' and ext2 between '"+startTim+"' and '"+endTime+"' and ext2 is not null group by to_char(to_date(ext2,'YYYY-MM-dd'),'$s') order by to_char(to_date(ext2,'YYYY-MM-dd'),'$s') asc "); /* 給$s賦值,可以動態傳入 */ sql.vars().set("s","YYYY-MM-dd"); /* 由於上一條SQL語句獲取的Hashtable迭代出來沒有按順序,這裡通過另一條sql,獲取日期List(順序)*/
Sql sql2 = Sqls.create(" select to_char(to_date(ext2,'YYYY-MM-dd'),'$s') from CMS_INDEXPV where site_id = '"+site+"' and ext2 between '"+startTime+"' and '"+endTime+"' and ext2 is not null group by to_char(to_date(ext2,'YYYY-MM-dd'),'$s') order by to_char(to_date(ext2,'YYYY-MM-dd'),'$s') asc "); sql2.vars().set("s","YYYY-MM-dd"); /* 執行sql,獲取按條件分組統計的資料HashTable */ Hashtable<String,String> pvMap = daoCtl.getHTable(dao, sql); /* 執行sql2,獲取按順序排列的日期List */ List<String> list = daoCtl.getStrRowValues(dao,sql2); /* 獲取查詢資料的sum值 */ Sql sqlSum = Sqls.create(" select sum(count) from CMS_INDEXPV where site_id = '"+ site+"' and ext2 between '"+startTime+"' and '"+endTime+"' and ext2 is not null "); String pvSum = daoCtl.getStrRowValue(dao,sqlSum); /* 按格式拼接字串 */ StringBuffer sb = new StringBuffer("["); for(String key : list){ sb.append("[\""+key+"\",\""+pvMap.get(key)+"\"],"); } sb.deleteCharAt(sb.length()-1); sb.append("]@@"+pvSum); return sb.toString(); }

以下是按日統計的頁面效果圖:
效果圖

理論上可以通過傳遞引數的改變返回所需要的訪問量統計資料,比如可以按周統計,按月統計等等

以下待開發ing……