Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment créer des colonnes de variables factices pour des milliers de catégories dans Google BigQuery ?

Vous pouvez utiliser ci-dessous "technique"

Exécutez d'abord la requête n° 1. Il produit la requête (requête #2) que vous devez exécuter pour obtenir le résultat dont vous avez besoin. Veuillez toujours tenir compte des commentaires de Mosha avant de devenir "sauvage" avec des milliers de catégories :o)

Requête #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
)

Le résultat sera comme ci-dessous - Requête #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

bien sûr pour trois catégories - vous pouvez le faire manuellement, mais pour des milliers, cela vous fera certainement plaisir !!

Le résultat de la requête #2 ressemblera à ce que vous attendiez :

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