首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

SQL 按日期統計 poster_code 實名/匿名任務量:CASE WHEN 條件聚合一條語句搞定

     編輯:程式設計綜合問答

表結構:`poster_code`、`post_date`、`post_type`(1匿名/2實名)、`quantity`。需按日期+代碼分組,輸出匿名/實名總量。

標準 SQL

SELECT 
    poster_code,
    post_date,
    SUM(CASE WHEN post_type = 1 THEN quantity ELSE 0 END) AS 匿名數量,
    SUM(CASE WHEN post_type = 2 THEN quantity ELSE 0 END) AS 實名數量
FROM 表名
GROUP BY poster_code, post_date
ORDER BY post_date, poster_code;

各庫方言微調

資料庫寫法差異
MySQL同上,別名可不加引號
SQL Server別名加方括號 `[匿名數量]` 或雙引號
Oracle`CASE post_type WHEN 1 THEN quantity ELSE 0 END` 簡潔寫法
PostgreSQL同上,支援 `FILTER`:`SUM(quantity) FILTER (WHERE post_type=1)`

進階:同一天同代碼多類型合併顯示

若需一行顯示所有類型,可用 `PIVOT`(SQL Server/Oracle)或 `crosstab`(PostgreSQL),但 `CASE WHEN` 通用性最強、可移植。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved