統計報表 -- 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
- [20221012]修改統計資訊最佳化sql語句.txtSQL
- sql語句的程式設計手冊(轉)SQL程式設計
- [20211009]使用bash計算sql語句的sql_id.txtSQL
- 語句效率統計檢視 | 全方位認識 sys 系統庫
- [20191101]通過zsh計算sql語句的sql_id.txtSQL
- [20191011]通過bash計算sql語句的sql_id.txtSQL
- Mysql 獲取表設計查詢語句MySql
- 統計術語
- 定時生成分月表sql語句SQL
- 兩表聯查修改的sql語句SQL
- SQL單表查詢語句總結SQL
- Java中如何解析SQL語句、格式化SQL語句、生成SQL語句?JavaSQL
- SQL語句SQL
- ACCESS 統計報表有多少行記錄
- 獲取oracle sql語句詳細些執行計劃OracleSQL
- 好程式設計師分享MyBatis之動態SQL語句程式設計師MyBatisSQL
- spark sql語句效能最佳化及執行計劃SparkSQL
- [20220111]該語句的sql_id如何計算的.txtSQL
- 【SQL】9 SQL INSERT INTO 語句SQL
- 【SQL】10 SQL UPDATE 語句SQL
- 【SQL】11 SQL DELETE 語句SQLdelete
- sql統計各種奇葩的資料庫表資料SQL資料庫
- ORACLE表統計資訊與列統計資訊、索引統計資訊Oracle索引
- SQL SELECT 語句SQL
- sql常用語句SQL
- 【統計資訊】全面檢視錶所有統計資訊SQLSQL
- excel表結構生成powerDesigner模型,生成建表語句sqlExcel模型SQL
- SQL Server 更新統計資訊SQLServer
- 複製表結構和資料SQL語句SQL
- Mysql跨表更新 多表update sql語句總結MySql
- [20210112]ashtop查詢特定表的SQL語句.txtSQL
- sql 語言 groupBy 分組統計時間段解決方案SQL
- [20221216]建立修改表統計資訊minmaxtab.sql指令碼.txtSQL指令碼
- [20221216]建立修改表統計資訊modtab.sql指令碼.txtSQL指令碼
- 詞語詞頻統計
- 1.3. SQL 語句SQL