sql >> データベース >  >> RDS >> Mysql

Google BigQueryで数千のカテゴリのダミー変数列を作成するにはどうすればよいですか?

    以下の「テクニック」を使用できます

    最初にクエリ#1を実行します。必要な結果を得るために実行する必要のあるクエリ(クエリ#2)が生成されます。数千のカテゴリで「ワイルド」になる前に、Moshaのコメントを検討してください:o)

    クエリ#1:

    SELECT 'select UserID, ' + 
       GROUP_CONCAT_UNQUOTED(
        'sum(if(category = "' + STRING(category) + '", 1, 0)) as ' + STRING(category)
       ) 
       + ' from YourTable group by UserID'
    FROM (
      SELECT category 
      FROM YourTable  
      GROUP BY category
    )
    

    結果は次のようになります-クエリ#2

    SELECT
      UserID,
      SUM(IF(category = "A", 1, 0)) AS A,
      SUM(IF(category = "B", 1, 0)) AS B,
      SUM(IF(category = "C", 1, 0)) AS C
    FROM
      YourTable
    GROUP BY
      UserID
    

    もちろん、3つのカテゴリの場合-手動で行うこともできますが、数千の場合は間違いなくあなたのための日になるでしょう!!

    クエリ#2の結果は期待どおりになります:

    UserID  A   B   C    
    1       1   1   0    
    2       0   0   1    
    3       1   1   1    
    



    1. MariaDBの日時値に秒を追加する8つの方法

    2. SQLiteツールをダウンロードしてインストールする方法

    3. SQLServerでINNERJOINを使用して複数のテーブルから削除するにはどうすればよいですか

    4. Fluent NHibernateおよびPostgreSQL、SchemaMetadataUpdater.QuoteTableAndColumns-System.NotSupportedException:指定されたメソッドはサポートされていません