sql >> Databasteknik >  >> RDS >> Mysql

Hur skapar man dummyvariabelkolumner för tusentals kategorier i Google BigQuery?

Du kan använda nedanstående "teknik"

Kör första fråga #1. Den producerar frågan (fråga #2) som du behöver köra för att få det resultat du behöver. Tänk ändå på Moshas kommentarer innan du går "vild" med tusentals kategorier :o)

Fråga #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 blir som nedan - Fråga #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

naturligtvis för tre kategorier - du kan göra det manuellt, men för tusentals kommer det definitivt att göra dagen för dig!

Resultatet av fråga #2 kommer att se ut som du förväntar dig:

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



  1. Hur får man aktuellt datum i PL/SQL?

  2. Hur använder jag CONCAT-funktionen i SQL Server 2008 R2?

  3. Tuning SQL Server Reporting Services

  4. Är Oracles SYS_GUID() UUID RFC 4122 kompatibel?