統計報表 -- sql統計語句
需要資料統計頁面,肯定需要匯出資料,於是,邊學邊寫,完成了一段sql~
最早的版本是這樣的:分三條sql查出三種不同的狀態的記錄數(總記錄,未支付,已支付)
SELECT COUNT(*) AS RecordCount FROM t_record WHERE CreateTime >= '2019-01-01 00:00:00' AND CreateTime < '2019-02-01 00:00:00'
SELECT COUNT(*) AS UnPayedCount FROM t_record WHERE CreateTime >= '2019-01-01 00:00:00' AND CreateTime < '2019-02-01 00:00:00' AND IsPayed = 0
SELECT COUNT(*) AS PayedCount FROM t_record WHERE CreateTime >= '2019-01-01 00:00:00' AND CreateTime < '2019-02-01 00:00:00' AND IsPayed = 1
但是,還有一個需求,對記錄數進行分日期進行統計,於是,需要改進,想到了用 GROUP BY 去實現; 但問題是CreateTime是DateTime, 接著百度之,找到了 CONVERT函式,於是變成了:
SELECT COUNT(*) AS RecordCount FROM t_record WHERE CreateTime >= '2019-01-01 00:00:00' AND CreateTime < '2019-02-01 00:00:00' GROUP BY CONVERT(CreateTime,DATE)
SELECT COUNT(*) AS UnPayedCount FROM t_record WHERE CreateTime >= '2019-01-01 00:00:00' AND CreateTime < '2019-02-01 00:00:00' AND IsPayed = 0 GROUP BY CONVERT(CreateTime,DATE)
SELECT COUNT(*) AS PayedCount FROM t_record WHERE CreateTime >= '2019-01-01 00:00:00' AND CreateTime < '2019-02-01 00:00:00' AND IsPayed = 1 GROUP BY CONVERT(CreateTime,DATE)
但是,為什麼不能一條sql查出來呢?這樣在便利性還是效能上應該都會有所提升,能否在COUNT帶條件或者在SUM做判斷?於是,最終的sql出現了:
SELECT
CONVERT(CreateTime,DATE) AS RecordDate,
COUNT(*) AS RecordCount,
SUM(CASE WHEN IsPayed = 0 THEN 1 ELSE 0 END) AS UnPayedCount,
SUM(CASE WHEN IsPayed = 0 THEN 1 ELSE 0 END) AS PayedCount,
FROM t_record
WHERE CreateTime >= '2019-01-01 00:00:00' AND CreateTime < '2019-02-01 00:00:00'
GROUP BY CONVERT(CreateTime,DATE)
原文:簡書ThinkinLiu 部落格: IT老五
相關報表圖形繪製:統計報表 -- HignCharts:線形圖餅圖繪製及時間等定製
相關文章
- 統計介面sql語句SQL
- sql語句面試題(城市人口統計)SQL面試題
- 統計未用繫結變數的sql語句變數SQL
- SQL語句統計每天、每月、每年的 資料SQL
- SQL Server 統計報表(不斷收藏中)SQLServer
- 最簡單的sql語句(增刪改查統計)SQL
- 用SQL語句統計IP地址前三段 (轉)SQL
- Audit裡審計SQL語句與審計系統許可權的區別SQL
- sql關於連續日期的統計報表問題SQL
- Sql建表語句SQL
- sql 建表語句SQL
- sql語句建立表SQL
- oracle之 v$sql_monitor 監視正在執行的SQL語句的統計資訊OracleSQL
- 報表系統的設計要素
- 通過分析SQL語句的執行計劃優化SQL語句SQL優化
- SAMPLE語句在統計資訊收集中應用
- 清除SQL語句的執行計劃SQL
- 語句效率統計檢視 | 全方位認識 sys 系統庫
- hibernate 多表之間的統計語句 (程式碼)
- 學用ORACLE AWR和ASH特性(4)-生成指定SQL的統計報表OracleSQL
- ORACLE表統計資訊與列統計資訊、索引統計資訊Oracle索引
- 統計術語
- sql語句的程式設計手冊(轉)SQL程式設計
- ACCESS 統計報表有多少行記錄
- [20221012]修改統計資訊最佳化sql語句.txtSQL
- ORACLE表統計資訊與列統計資訊Oracle
- Mysql 獲取表設計查詢語句MySql
- 專案sql統計SQL
- SQL語句查詢表結構SQL
- mysql 查詢建表語句sqlMySql
- SQL語句圖表生成工具ChartSQLSQL
- 計生工作統計套表
- 分享[ASP.NET] SQL語句統計每天、每月、每年的資料 編輯:吳立星ASP.NETSQL
- 【sql調優】系統資訊統計SQL
- 【統計資訊】全面檢視錶所有統計資訊SQLSQL
- 根據SQL Id獲得SQL語句的執行計劃SQL
- 定時生成分月表sql語句SQL
- SQL單表查詢語句總結SQL