sql >> Database >  >> RDS >> Mysql

Hoe maak je dummy variabele kolommen voor duizenden categorieën in Google BigQuery?

U kunt hieronder "techniek" gebruiken

Voer query #1 eerst uit. Het produceert de query (query #2) die je moet uitvoeren om het gewenste resultaat te krijgen. Denk alsjeblieft nog steeds aan de opmerkingen van Mosha voordat je "wild" wordt met duizenden categorieën :o)

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

Het resultaat is zoals hieronder - Query #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

natuurlijk voor drie categorieën - je zou het handmatig kunnen doen, maar voor duizenden zal het zeker dag voor je maken!!

Het resultaat van zoekopdracht #2 ziet eruit zoals u verwacht:

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



  1. Tabel maken in procedure

  2. Werken met JDBC-gegevens in Domo

  3. Is er een manier om de JBoss-verbindingspool opnieuw te verbinden met Oracle wanneer de verbindingen slecht worden?

  4. UNION-query met het actieve recordpatroon van codeigniter