Tôi có bảng db sau đây và tôi muốn có thể đếm được trường hợp bán các sản phẩm nhất định trên mỗi nhân viên bán hàng.Các cột đếm MySQL về giá trị cụ thể
|------------|------------|------------|
|id |user_id |product_id |
|------------|------------|------------|
|1 |1 |2 |
|2 |1 |4 |
|3 |1 |2 |
|4 |2 |1 |
|------------|------------|------------|
Tôi muốn tạo tập hợp kết quả như sau;
|------------|-------------|------------|------------|------------|
|user_id |prod_1_count |prod_2_count|prod_3_count|prod_4_count|
|------------|-------------|------------|------------|------------|
|1 |0 |2 |0 |1 |
|2 |1 |0 |0 |0 |
|------------|-------------|------------|------------|------------|
Tôi đang tạo biểu đồ với dữ liệu này và một lần nữa (như trước đó hôm nay) Tôi không thể đếm tổng số cột. Tôi đã thử;
SELECT user_id,
(SELECT count(product_id) FROM sales WHERE product_id = 1) AS prod_1_count,
(SELECT count(product_id) FROM sales WHERE product_id = 2) AS prod_2_count,
(SELECT count(product_id) FROM sales WHERE product_id = 3) AS prod_3_count,
(SELECT count(product_id) FROM sales WHERE product_id = 4) AS prod_4_count
FROM sales GROUP BY user_id;
Tôi có thể thấy lý do tại sao điều này không hiệu quả, vì đối với mỗi SELECT được chọn, user_id không khớp với user_id bên ngoài trong câu lệnh SELECT chính.
Có ai có thể giúp tôi ở đây không?
nhờ bạn
Cảm ơn Ike, đây là giải pháp nhanh nhất trong số tất cả các giải pháp. Cảm ơn bạn :) –
Bạn không thể làm 'sum (product_id = 1)'? 'product_id = 1' là một biểu thức boolean; nó sẽ tự nhiên trả về 1 hoặc 0 mà không có trường hợp chuyển đổi. – mpen
@Mark yes có thể hoạt động tốt và có thể nhanh hơn, nhưng tôi thấy giải pháp được viết để dễ đọc hơn. –