Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách tạo cột biến giả cho hàng nghìn danh mục trong Google BigQuery?

Bạn có thể sử dụng bên dưới "technic"

Đầu tiên hãy chạy truy vấn số 1. Nó tạo ra truy vấn (truy vấn số 2) mà bạn cần chạy để nhận được kết quả bạn cần.

Truy vấn số 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
)

Kết quả sẽ như dưới đây - Truy vấn số 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

tất nhiên đối với ba danh mục - bạn có thể làm điều đó theo cách thủ công, nhưng đối với hàng nghìn loại, nó chắc chắn sẽ có ngày cho bạn !!

Kết quả của truy vấn số 2 sẽ giống như bạn mong đợi:

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. Tìm hiểu cách sử dụng Cơ sở dữ liệu MySQL

  2. Tạo biến bảng trong MySQL

  3. Cách tính số người dùng hoạt động hàng tháng (MAU) trong MySQL

  4. Mô phỏng chức năng lag trong MySQL

  5. Lỗi MySQL 1264:giá trị ngoài phạm vi cho cột