sql >> Database teknologi >  >> RDS >> Mysql

Hvordan opretter man dummy-variable kolonner for tusindvis af kategorier i Google BigQuery?

Du kan bruge nedenstående "teknik"

Kør først forespørgsel #1. Det producerer forespørgslen (forespørgsel #2), som du skal køre for at få det ønskede resultat. Overvej venligst Moshas kommentarer, før du går "vild" med tusindvis af kategorier :o)

Forespørgsel #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
)
 

Resultatet vil være som nedenfor - Forespørgsel #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

selvfølgelig for tre kategorier - du kan gøre det manuelt, men for tusinder vil det helt sikkert gøre dagen for dig!

Resultatet af forespørgsel #2 vil se ud, som du forventer:

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



  1. SQL Server VÆLG I @variabel?

  2. Sådan opretter du et indeks i Django uden nedetid

  3. Sådan fungerer SPACE() i MariaDB

  4. SQL Server *=Operatør?