YehYeh 記事本2.0

Version 0.8.3

竹科碼農的記事本

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

Reference:

Last updated on 2020-04-06
Published on 2020-04-06
Edit on GitHub