본문 바로가기
MySql

MySQL 특정 값에 대한 MySQL 개수 열

by 베이스 공부 2021. 1. 7.
반응형

나는 다음과 같은 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

 

 

반응형

댓글