SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE condition
GROUP BY column_name
原始資料:
| gameid | best | top | spam |
|---|---|---|---|
| 111 | 1 | 1 | 1 |
| 121 | 1 | 1 | 0 |
| 123 | 0 | 1 | 1 |
| 111 | 1 | 0 | 1 |
查詢:
SELECT gameid,
SUM(best) AS bestcnt,
SUM(top) AS topcnt,
SUM(spam) AS spamcnt
FROM table
GROUP BY gameid
結果:
| gameid | bestcnt | topcnt | spamcnt |
|---|---|---|---|
| 111 | 2 | 1 | 2 |
| 121 | 1 | 1 | 0 |
| 123 | 0 | 1 | 1 |
$sql = "SELECT gameid,
SUM(best) AS best,
SUM(top) AS top,
SUM(spam) AS spam
FROM tablename
GROUP BY gameid
ORDER BY gameid ASC";
使用 DECODE(Oracle)或 CASE WHEN(通用)將勝負轉為數值後加總:
SELECT 日期,
SUM(CASE WHEN 勝負='勝' THEN 1 ELSE 0 END) AS 勝,
SUM(CASE WHEN 勝負='負' THEN 1 ELSE 0 END) AS 負
FROM 數據庫表
GROUP BY 日期