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

Come creare colonne variabili fittizie per migliaia di categorie in Google BigQuery?

Puoi usare sotto "tecnica"

Prima query di esecuzione n. 1. Produce la query (query n. 2) che devi eseguire per ottenere il risultato di cui hai bisogno. Per favore, considera ancora i commenti di Mosha prima di diventare "selvaggio" con migliaia di categorie :o)

Domanda n. 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
)

Il risultato sarà come di seguito:Query n. 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

ovviamente per tre categorie:potresti farlo manualmente, ma per migliaia farà sicuramente giorno per te!!

Il risultato della query n. 2 apparirà come previsto:

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