Chuyển hàng thành cột
Thuộc phần Vượt ra ngoài kiến thức cơ bản trong hành trình SQL của Coddy. Bài học 14 trên 27.
Kết hợp phép tổng hợp có điều kiện (conditional aggregation) với GROUP BY để biến các hàng thành cột. Đây là phiên bản SQL của bảng tổng hợp động trong bảng tính.
Giả sử sales có các hàng như (month, product, units). Để xem mỗi tháng một hàng và mỗi sản phẩm một cột:
SELECT
month,
SUM(CASE WHEN product = 'A' THEN units ELSE 0 END) AS product_a,
SUM(CASE WHEN product = 'B' THEN units ELSE 0 END) AS product_b
FROM sales
GROUP BY monthNhóm mà SUM(CASE …) nhìn thấy khi dùng GROUP BY gồm các hàng của một tháng; CASE chọn phần dữ liệu của một sản phẩm.
Thử thách
DễCác bảng và cột hiện có:
sales:month,product,units
Chuyển đổi dữ liệu để mỗi hàng tương ứng với một month và có các cột sau:
monthapples: tổngunitscủa sản phẩm'apples'trong tháng đóbananas: tương tự với'bananas'cherries: tương tự với'cherries'total: tổngunitscủa tất cả sản phẩm trong tháng đó
Chỉ trả về những tháng có total ít nhất là 20. Sắp xếp theo month.
Tự làm thử
SELECT month,
-- mỗi sản phẩm dùng một SUM(CASE ...), cộng thêm tổng
FROM sales
GROUP BY month
-- lọc các tháng có tổng >= 20
ORDER BY month
Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Vượt ra ngoài kiến thức cơ bản
6Công thức phân tích dữ liệu
Top N trong mỗi nhómTỷ lệ trên tổngTổng lũy kếGiữ lại một hàng cho mỗi khóaÔn tập: khách hàng hàng đầuTự luyện tập: Playground SQL