반응형
나는 다음과 같은 db 테이블을 가지고 있으며, 판매 원당 특정 제품의 판매 인스턴스를 계산할 수 있기를 원합니다.
|------------|------------|------------|
|id |user_id |product_id |
|------------|------------|------------|
|1 |1 |2 |
|2 |1 |4 |
|3 |1 |2 |
|4 |2 |1 |
|------------|------------|------------|
다음과 같은 결과 집합을 만들고 싶습니다.
|------------|-------------|------------|------------|------------|
|user_id |prod_1_count |prod_2_count|prod_3_count|prod_4_count|
|------------|-------------|------------|------------|------------|
|1 |0 |2 |0 |1 |
|2 |1 |0 |0 |0 |
|------------|-------------|------------|------------|------------|
이 데이터로 그래프를 만들고 있는데 다시 한 번 (오늘 이전과 같이) 열 합계를 계산할 수 없습니다. 나는 시도했다;
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;
괄호로 묶인 각 SELECT에 대해 user_id가 기본 SELECT 문의 외부 user_id와 일치하지 않기 때문에 이것이 작동하지 않는 이유를 알 수 있습니다.
누구든지 여기서 나를 도울 수 있습니까?
감사합니다
해결 방법
select user_id,
sum(case when product_id = 1 then 1 else 0 end) as prod_1_count,
sum(case when product_id = 2 then 1 else 0 end) as prod_2_count,
sum(case when product_id = 3 then 1 else 0 end) as prod_3_count,
sum(case when product_id = 4 then 1 else 0 end) as prod_4_count
from your_table
group by user_id
참조 페이지 https://stackoverflow.com/questions/15815011
반응형
'MySql' 카테고리의 다른 글
MySQL 너무 많은 MySQL 데이터베이스를 삭제 한 후 XAMPP를 수정하는 방법은 무엇입니까? (0) | 2021.01.07 |
---|---|
MySQL MYSQL : 삽입 중에 NULL 또는 빈 데이터를 기본값 0으로 만드는 방법 (0) | 2021.01.07 |
MySQL 오류 1241 : 피연산자는 1 개의 열을 포함해야합니다. (0) | 2021.01.07 |
MySQL 10 진수 필드로 실패한 MySql 쿼리보다 크거나 작음 (0) | 2021.01.07 |
MySQL은 여러 열 삭제 (0) | 2021.01.06 |
댓글