Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да създадете фиктивни колони с променлива за хиляди категории в Google BigQuery?

Можете да използвате по-долу "техника"

Първо стартиране на заявка №1. Той произвежда заявката (заявка №2), която трябва да изпълните, за да получите нужния ви резултат. Моля, все пак помислете за коментарите на Mosha, преди да станете „диви“ с хиляди категории :o)

Заявка №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
)

Резултатът ще бъде като по-долу - Заявка №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

разбира се за три категории - можете да го направите ръчно, но за хиляди това определено ще ви помогне!!

Резултатът от заявка №2 ще изглежда както очаквате:

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL JOIN с LIMIT 1 върху обединена маса

  2. Как да промените форматите за дата и час в MySQL

  3. Как да създадете блог в PHP и MySQL база данни - Backend

  4. Как да получите броя на битовете в низ в MySQL – BIT_LENGTH()

  5. JDBC кодиране на символи