CASEステートメントでCOUNTを使用するMySQl

やめないで

私のmysqlデータベースには、instagram_actions_historiesとして2つの重要な列を持つテーブルがあります。次に、countステートメントとcaseステートメントを使用して、s列のカウントを取得します。次に例を示します。action_typeaction_nameid

すべてのカウントidの際にaction_type等しい1action_name「のような」等しいです

select `account_id`,

count(case when action_type = 1 and action_name='like' then id else 0 END) as `like`,
count(case when action_type = 1 and action_name='superLike' then id else 0 END) as `superLike`,
count(case when action_type = 2 then id else 0 END) as `follow`, 

from `instagram_actions_histories` 
where `instagram_actions_histories`.`account_id` in (1) 
group by `account_id`

残念ながら、すべての出力が同じであるため、間違った結果が得られます。次に例を示します。

account_id  like    superLike    follow
1           1282    1282         1282

正しい結果は次のようになります。

account_id  like    superLike    follow
1           1282    20           10
Tim Biegeleisen

一致NULLする場合は1を数え、一致しない場合は数える必要があります

SELECT
    account_id,
    COUNT(CASE WHEN action_type = 1 AND action_name = 'like' THEN 1 END) AS `like`,
    COUNT(CASE WHEN action_type = 1 AND action_name = 'superLike' THEN 1 END) AS superLike,
    COUNT(CASE WHEN action_type = 2 THEN 1 END) AS follow
FROM instagram_actions_histories
WHERE account_id IN (1)
GROUP BY account_id;

CASE式の現在のロジックの問題は、COUNTnull以外の値を1つのカウントとしてカウントすることです。したがって、ゼロもカウントされます。

現在のロジックSUM、条件付き集計を取得するために使用て機能していることに注意してください。

SUM(CASE WHEN action_type = 1 AND action_name = 'like'
         THEN 1 ELSE 0 END) AS `like`

この場合、一致しないレコードの集計をオフにするには、ゼロを合計しても合計に影響しないため、実際にはゼロを使用できます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

MySQLでCASE / IFステートメントを使用する

分類Dev

caseステートメントにcountを使用する方法

分類Dev

SQL ServerのCASEステートメント内でCOUNT(*)を使用する

分類Dev

mySQL-JOINでCOUNT()ステートメントを使用する方法

分類Dev

JavaScriptのCaseステートメントで「OR」を使用する

分類Dev

Elixir:caseステートメントで変数を使用する

分類Dev

isnullなどでCASEステートメントを使用する

分類Dev

CASEステートメントで「BETWEEN」を使用する方法

分類Dev

JOINでCASEステートメントを使用する方法

分類Dev

where句でcaseステートメントを使用する

分類Dev

selectでCaseステートメントを使用する

分類Dev

'case'式内で 'in'ステートメントを使用する

分類Dev

caseステートメントでxargsを使用する

分類Dev

SQLServerでCASEステートメントを使用する方法

分類Dev

caseステートメントを使用してMySQLでテーブルをピボットする方法は?

分類Dev

Oracleの別のcaseステートメントでcaseステートメントの結果を使用する

分類Dev

CASEを使用してSQLiteでCOUNTステートメントの条件を設定する

分類Dev

CaseステートメントでCount条件を使用して、変数を分類する

分類Dev

SQLServerでCaseステートメントを使用するネストされたIfステートメント

分類Dev

mysqlでcaseステートメントを使用して小数点以下2桁を使用する方法

分類Dev

SQLServerでネストされたCASEステートメントを使用する

分類Dev

MySQLはCASEステートメントでdate()を使用します

分類Dev

MysqlはcaseステートメントでDESCを使用します

分類Dev

mysqlでifステートメントを使用する方法

分類Dev

'IN'をcaseステートメントで使用できますか?

分類Dev

条件のあるMONGODBでcaseステートメントを使用する方法

分類Dev

Oracle-CountでのCaseステートメントの使用

分類Dev

CASEステートメントを持つSQLでPreparedStatementを使用する方法

分類Dev

CASEステートメントでビューを作成する

Related 関連記事

  1. 1

    MySQLでCASE / IFステートメントを使用する

  2. 2

    caseステートメントにcountを使用する方法

  3. 3

    SQL ServerのCASEステートメント内でCOUNT(*)を使用する

  4. 4

    mySQL-JOINでCOUNT()ステートメントを使用する方法

  5. 5

    JavaScriptのCaseステートメントで「OR」を使用する

  6. 6

    Elixir:caseステートメントで変数を使用する

  7. 7

    isnullなどでCASEステートメントを使用する

  8. 8

    CASEステートメントで「BETWEEN」を使用する方法

  9. 9

    JOINでCASEステートメントを使用する方法

  10. 10

    where句でcaseステートメントを使用する

  11. 11

    selectでCaseステートメントを使用する

  12. 12

    'case'式内で 'in'ステートメントを使用する

  13. 13

    caseステートメントでxargsを使用する

  14. 14

    SQLServerでCASEステートメントを使用する方法

  15. 15

    caseステートメントを使用してMySQLでテーブルをピボットする方法は?

  16. 16

    Oracleの別のcaseステートメントでcaseステートメントの結果を使用する

  17. 17

    CASEを使用してSQLiteでCOUNTステートメントの条件を設定する

  18. 18

    CaseステートメントでCount条件を使用して、変数を分類する

  19. 19

    SQLServerでCaseステートメントを使用するネストされたIfステートメント

  20. 20

    mysqlでcaseステートメントを使用して小数点以下2桁を使用する方法

  21. 21

    SQLServerでネストされたCASEステートメントを使用する

  22. 22

    MySQLはCASEステートメントでdate()を使用します

  23. 23

    MysqlはcaseステートメントでDESCを使用します

  24. 24

    mysqlでifステートメントを使用する方法

  25. 25

    'IN'をcaseステートメントで使用できますか?

  26. 26

    条件のあるMONGODBでcaseステートメントを使用する方法

  27. 27

    Oracle-CountでのCaseステートメントの使用

  28. 28

    CASEステートメントを持つSQLでPreparedStatementを使用する方法

  29. 29

    CASEステートメントでビューを作成する

ホットタグ

アーカイブ