[SQL] 조인 된 테이블 C 럼의 구별 합계를 얻기
SQL조인 된 테이블 C 럼의 구별 합계를 얻기
나는 여기에 문제가있다, 나는 쉬운 솔루션이 바라고 있어요. 나는 가능한 한 간단하게이를 만들기 위해 노력하고 있습니다 :
해결법
-
==============================
1.부질없는 결과를 얻으려면, 당신은 고급 윈도우 함수의 속임수에 의지해야한다 :
부질없는 결과를 얻으려면, 당신은 고급 윈도우 함수의 속임수에 의지해야한다 :
SELECT sum(count(*)) OVER () AS tickets_count ,sum(min(a.revenue)) OVER () AS atendees_revenue FROM tickets t JOIN attendees a ON a.id = t.attendee_id GROUP BY t.attendee_id LIMIT 1;
SQL 바이올린.
이 문제를 이해하는 열쇠는 쿼리의 이벤트 순서입니다 :
집계 함수 -> 윈도우 함수 -> DISTINCT -> LIMIT
자세한 내용은 여기 :
단계에 의해 단계 :
-
==============================
2.간단한 부문에 대해 무엇 :
간단한 부문에 대해 무엇 :
Select count(tickets.*) as tickets_count , sum(attendees.revenue) / count(attendees.id) as atendees_revenue from tickets LEFT OUTER JOIN attendees ON attendees.id = tickets.attendee_id;
이것은 등등 중복, 삼중를 처리해야합니다.
-
==============================
3.당신이이 작업을 수행하는 많은 방법이 있고 난 당신의 질문을 이해한다면 올바르게 그것을해야한다, 아주 가까이 실제로 있었다 :
당신이이 작업을 수행하는 많은 방법이 있고 난 당신의 질문을 이해한다면 올바르게 그것을해야한다, 아주 가까이 실제로 있었다 :
SELECT COUNT(*) AS ticketsCount, SUM(DISTINCT attendees.revenue) AS revenueSum FROM tickets LEFT JOIN attendees ON attendees.id = tickets.attendee_id
-
==============================
4.이전 대답은 거의 정확합니다. 당신은 경우 동일한 수익에서 잘 별개의 작업을 확인해야합니다. 당신의 ID가 숫자 유형이있는 경우이 정말 간단한 문제를 해결할 수 있습니다 :
이전 대답은 거의 정확합니다. 당신은 경우 동일한 수익에서 잘 별개의 작업을 확인해야합니다. 당신의 ID가 숫자 유형이있는 경우이 정말 간단한 문제를 해결할 수 있습니다 :
SELECT COUNT(*) AS ticketsCount, SUM(DISTINCT attendees.id + attendees.revenue) - SUM(DISTINCT attendees.id) AS revenueSum FROM tickets LEFT JOIN attendees ON attendees.id = tickets.attendee_id
from https://stackoverflow.com/questions/13169367/get-the-distinct-sum-of-a-joined-table-column by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 간단한 PHP SQL 로그인 문제 해결 (0) | 2020.04.27 |
---|---|
[SQL] 열 NOT NULL 제약 조건을 통해 집합 (0) | 2020.04.27 |
[SQL] MySQL을 건너 뛰는 첫 번째 행 (0) | 2020.04.27 |
[SQL] 그것은 (SQL Server 내) 트랜잭션 내부의 여러 DDL 문을 실행할 수 있습니까? (0) | 2020.04.27 |
[SQL] SQL Server 2008의 분할 기능 (0) | 2020.04.27 |