Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como criar colunas de variáveis ​​fictícias para milhares de categorias no Google BigQuery?


Você pode usar abaixo "técnica"

Primeira consulta #1. Ele produz a consulta (consulta #2) que você precisa executar para obter o resultado que você precisa. Por favor, ainda considere os comentários de Mosha antes de ficar "selvagem" com milhares de categorias :o)

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

O resultado será como abaixo - Consulta #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

é claro para três categorias - você pode fazê-lo manualmente, mas para milhares definitivamente fará dia para você!

O resultado da consulta nº 2 terá a aparência esperada:
UserID  A   B   C    
1       1   1   0    
2       0   0   1    
3       1   1   1