Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie erstelle ich Dummy-Variablenspalten für Tausende von Kategorien in Google BigQuery?

Sie können unten "Technik" verwenden

Führen Sie zuerst Abfrage Nr. 1 aus. Es erzeugt die Abfrage (Abfrage Nr. 2), die Sie ausführen müssen, um das gewünschte Ergebnis zu erhalten. Bitte beachten Sie Moshas Kommentare, bevor Sie mit Tausenden von Kategorien "wild" werden :o)

Abfrage #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
)

Das Ergebnis sieht wie folgt aus:Abfrage #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

natürlich für drei Kategorien - Sie könnten es manuell machen, aber für Tausende wird es Ihnen bestimmt den Tag versüßen!!

Das Ergebnis von Abfrage Nr. 2 sieht wie erwartet aus:

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