sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo crear columnas de variables ficticias para miles de categorías en Google BigQuery?

Puede usar la siguiente "técnica"

Primero ejecute la consulta #1. Produce la consulta (consulta n.º 2) que debe ejecutar para obtener el resultado que necesita. Por favor, tenga en cuenta los comentarios de Mosha antes de volverse "loco" con miles de categorías :o)

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

El resultado será el siguiente:consulta 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

por supuesto, para tres categorías:¡podrías hacerlo manualmente, pero para miles definitivamente te alegrará el día!

El resultado de la consulta n.º 2 se verá como espera:

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