Count
Count()
COUNT( [ALL | DISTINCT | * ] expression)
-
COUNT(*) :
- 回傳同Group裡的筆數
- 含NULL和重複的資料
-
COUNT(DISTINCT expression)
- 回傳的筆數,重複的只會算1筆,NULL不會算
- expression 只能是欄位名稱
-
COUNT(ALL expression)
- 類似
*
,但可以有expression - 含NULL和重複的資料
- expression 只能是欄位名稱
- 類似
-
沒有指定DICTINCT或ALL時,預設為ALL
-
其它的聚合函數(AVG(), SUM()…)都會自動略過NULL值,但COUNT(*)不會
TestTBL
ROWID | VAL |
---|---|
0 | A |
1 | A |
2 | B |
3 | NULL |
4 | C |
5 | NULL |
SELECT COUNT(*) FROM TestTBL -- 6
SELECT COUNT( DISTINCT val ) FROM TestTBL --3
SELECT COUNT( ALL val ) FROM TestTBL --4
COUNT(*)
COUNT(DISTINCT expression)
COUNT(ALL expression)
COUNT(*) OVER (analytic_clause)
COUNT(DISTINCT expression) OVER (analytic_clause)
COUNT(ALL expression) OVER (analytic_clause)
用SUM來計算特定值的數量
SELECT
SUM(CASE WHEN val = 'A' THEN 1 ELSE 0 END ) CNT_A,
SUM(CASE WHEN val = 'B' THEN 1 ELSE 0 END ) CNT_B
COUNT(*) TOTAL_CNT
FROM TestTBL