ヒストグラムのサブクエリを含む MySQL CASE ステートメント

新人

データを収集してヒストグラムを作成しようとしています。ユーザーがシステムにログインした回数のヒストグラムを作成したい。私の目標は、この回答の機能を利用することですが、より良い方法があればそれも問題ありません。

私のログイン テーブルは次のようになります。

datetime | userid

私の最初のステップは、ユーザーがログインした回数のカウントを取得することです。

select count(userid) from logins group by userid

これにより、次のような優れた結果セットが返されます。

1325
761
4012
1204
662
1841
15
1698
...

私の質問は、SELECT CASE WHENリンクされた回答の方法を利用するためにこれをどのように適応させることができるかです。そのコードは次のようになります。

SELECT CASE WHEN age BETWEEN 13 AND 17 THEN '13-17' 
            WHEN age BETWEEN 18 AND 25 THEN '18-25' 
            ELSE '26+' END AS AgeGroup,
    COUNT(*) AS total
FROM MyTable
GROUP BY AgeGroup

私の場合は、しかし、ageWHEN句、私はそれぞれのために実行する必要はないと思うことにサブクエリがありますWHENこれらのビンで使用する必要があるカウントを使用する効率的な方法は何ですか?

アジズ・シーク

したがって、ログイン数の範囲を作成しようとしているようです。その場合、最初にユーザーごとのログイン試行をカウントし、次に個々のカウントをさまざまなバケットに結合します。

次のクエリは1 ~ 2回、3 ~ 4 回、および4以上ログインしたユーザーの数を示します

SELECT CASE WHEN total_logins BETWEEN 1 AND 2 THEN '1-2' 
            WHEN total_logins BETWEEN 3 AND 4 THEN '3-4' 
            ELSE '4+' 
       END AS LoginGroup,
       COUNT(userid) AS total
FROM (
  SELECT userid, COUNT(*) AS total_logins 
  FROM login 
  GROUP BY userid
) t
GROUP BY LoginGroup

フィドルの作業: http://sqlfiddle.com/#!9/a66396/2


実際のログイン数に基づいてバケットを作成する必要がある場合は、以下のクエリのSUM(total_logins)代わりに使用COUNT(user_id)します。

SELECT CASE WHEN total_logins BETWEEN 1 AND 2 THEN '1-2' 
            WHEN total_logins BETWEEN 3 AND 4 THEN '3-4' 
            ELSE '4+' 
       END AS LoginGroup,
       SUM(total_logins) AS total
FROM (
  SELECT userid, COUNT(*) AS total_logins 
  FROM login 
  GROUP BY userid
) t
GROUP BY LoginGroup

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

mysqlクエリINSERTINTOの条件ステートメント(case if / else)

分類Dev

mysql caseステートメントのエイリアス

分類Dev

MYSQLトリガーのCASEステートメント

分類Dev

1行を誤って返すcaseステートメントを含むmysqlクエリ

分類Dev

caseステートメントを含むMySqlクエリをcodeigniterアクティブレコードクエリに変換します

分類Dev

mysqlストアド関数のcaseステートメント

分類Dev

MySQLのUPDATEの複雑なCASEステートメント

分類Dev

mysqlのwhere句のCASEステートメント

分類Dev

mysql-ORDER BYステートメントのIF ... ELSEまたはCASE

分類Dev

MySQL:FROM句のCASEステートメント

分類Dev

MySQL の if ステートメントまたは case when with where 条件

分類Dev

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

分類Dev

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

分類Dev

MySQL-CASE vsIFステートメントvsIF関数

分類Dev

Mysql INSERT INTOSELECTステートメントとCASE

分類Dev

MYSQLの同等のCASEステートメント内の構造化されたIf / Elseステートメント

分類Dev

Pyspark-caseステートメントのサブクエリ

分類Dev

サブクエリ内のCASEステートメント

分類Dev

MySQLクエリのselectステートメントで有効期限をチェックするCASE

分類Dev

MySQLストアドプロシージャCaseステートメントの構文エラー-続き

分類Dev

mySQLのCase式の中にIFステートメントを配置する方法は?

分類Dev

PHP MYSQLは、CaseステートメントでNULLを含む結果を表示します

分類Dev

MySQLケースエラー1111-SPのMax(Column)Caseステートメント

分類Dev

WHERE句を含むSQLクエリCASEステートメント

分類Dev

MySQLはCASEステートメントのSUMから減算します

分類Dev

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

分類Dev

Caseステートメントは常に1を与えます。MySQL

分類Dev

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

分類Dev

MySQL-構築時にCASE->内でselectステートメントを使用

Related 関連記事

  1. 1

    mysqlクエリINSERTINTOの条件ステートメント(case if / else)

  2. 2

    mysql caseステートメントのエイリアス

  3. 3

    MYSQLトリガーのCASEステートメント

  4. 4

    1行を誤って返すcaseステートメントを含むmysqlクエリ

  5. 5

    caseステートメントを含むMySqlクエリをcodeigniterアクティブレコードクエリに変換します

  6. 6

    mysqlストアド関数のcaseステートメント

  7. 7

    MySQLのUPDATEの複雑なCASEステートメント

  8. 8

    mysqlのwhere句のCASEステートメント

  9. 9

    mysql-ORDER BYステートメントのIF ... ELSEまたはCASE

  10. 10

    MySQL:FROM句のCASEステートメント

  11. 11

    MySQL の if ステートメントまたは case when with where 条件

  12. 12

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

  13. 13

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

  14. 14

    MySQL-CASE vsIFステートメントvsIF関数

  15. 15

    Mysql INSERT INTOSELECTステートメントとCASE

  16. 16

    MYSQLの同等のCASEステートメント内の構造化されたIf / Elseステートメント

  17. 17

    Pyspark-caseステートメントのサブクエリ

  18. 18

    サブクエリ内のCASEステートメント

  19. 19

    MySQLクエリのselectステートメントで有効期限をチェックするCASE

  20. 20

    MySQLストアドプロシージャCaseステートメントの構文エラー-続き

  21. 21

    mySQLのCase式の中にIFステートメントを配置する方法は?

  22. 22

    PHP MYSQLは、CaseステートメントでNULLを含む結果を表示します

  23. 23

    MySQLケースエラー1111-SPのMax(Column)Caseステートメント

  24. 24

    WHERE句を含むSQLクエリCASEステートメント

  25. 25

    MySQLはCASEステートメントのSUMから減算します

  26. 26

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

  27. 27

    Caseステートメントは常に1を与えます。MySQL

  28. 28

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

  29. 29

    MySQL-構築時にCASE->内でselectステートメントを使用

ホットタグ

アーカイブ