반응형
2개의 열이 있는 SQL:상위 3명의 사용자로부터의 커미션 및 커미션 합계
데이터베이스에서 SQL 통계를 실행하려고 합니다.날짜, 사용자 ID, 금액으로 구성된 작업 목록을 가지고 있습니다.
그 결과, 3개의 컬럼을 가지고 싶다고 생각하고 있습니다.
- 월(2020-01)
- 매출합계(xxx.xx)
- 이달 상위 3개 지출자의 매출 합계. (xxx.xx)
내가 지금까지 쓴 글과 내가 처한 상황은 다음과 같다.
SELECT DATE_FORMAT(`date_bill`, '%Y-%m') as money_month, SUM(`commission`) as 'Money'
FROM `money`
LEFT JOIN(
SELECT SUM(`commission`) as value, DATE_FORMAT(`date_bill`, '%Y-%m') as top3_month
FROM `money`
WHERE DATE_FORMAT(`date_bill`, '%Y-%m') = money_month
GROUP BY `user_id`
ORDER BY VALUE DESC
LIMIT 3
) as Top3
WHERE Top3.top3_month = money.money_month
GROUP BY DATE_FORMAT(`date_bill`, '%Y%m')
ORDER BY money_month DESC
나는 지금 여기에 갇혀 있다.어디를 봐야 하는지, 무엇을 잘못하고 있는지에 대한 팁이 있나요?
MySQL/MariaDB 버전이 창 기능을 지원하는 경우 다음과 같은 두 가지 수준의 집약을 통해 이를 수행할 수 있습니다.
select
mon,
sum(com) total_commissions,
sum(case when rn <= 3 then com end) top3_comissions
from (
select
date_format(`date_bill`, '%Y-%m') mon,
user_id,
sum(commission) com,
row_number()
over(partition by date_format(`date_bill`, '%Y-%m') order by sum(commission) desc) rn
from money
group by mon, user_id
) t
group by mon
order by mon
내부 쿼리는 사용자별 및 월별 커미션을 집계하고 각 사용자의 월별 매출에 순위를 할당합니다.외부 쿼리는 월별로 다시 집계되며 조건 합계를 사용하여 상위 3명의 사용자의 총 매출을 생성합니다.
상당히 복잡한 요구 사항입니다.
가입은 이런 거 아니에요.또한 GMB의 Answer가 작동하지 않았다고 합니다.
필요한 건
select left(date_bill, 7) as money_month, sum(commission) as money, money_top_3
from money
group by left(date_bill, 7)
order by ... desc
money_top_3은 서브 쿼리가 있는 서브 쿼리에서 도달할 수 있습니다.
select sum(money) from
(select left(date_bill, 7) as money_month, user_id, sum(commission) as money
from money tmoney
where money_month= left(money.date_bill, 7)
group by user_id
order by money desc limit 3 ) subq
단, 서브쿼리의 절이 허용되고 서브쿼리의 내부가 아닌 date_bill of money 데이터베이스를 사용하는 경우에도 이 방법은 작동하지 않습니다.
임시 테이블로 두 번째 부분(다른 하위 테이블과 하위 쿼리)을 수행한 후 첫 번째 쿼리를 실행하여 임시 테이블과 결합하는 것이 좋습니다.
언급URL : https://stackoverflow.com/questions/59874406/sql-with-2-columns-total-commission-and-commission-from-top-3-users
반응형
'programing' 카테고리의 다른 글
transition-group 속성 또는 소품 설정 방법 (0) | 2022.09.12 |
---|---|
Guice의 Assisted 사용방법주사? (0) | 2022.09.12 |
Vue.js 구문 오류(SCRIPT1003) IE11 이하 (0) | 2022.09.12 |
와, 뭔가 잘못 된 것 같아.라라벨 5.0 (0) | 2022.09.12 |
특정 자식 값의 부모 키를 가져오는 mariadb json 쿼리 (0) | 2022.09.12 |