SELECT
ct.contest_id
, ct.hacker_id
, ct.name
, IFNULL(SUM(ss.ts_sum), 0) AS ts_ss
, IFNULL(SUM(ss.tas_sum), 0) AS tas_ss
, IFNULL(SUM(vs.tv_sum), 0) AS tv_vs
, IFNULL(SUM(vs.tuv_sum), 0) AS tuv_vs
FROM
contests ct
LEFT JOIN colleges cl
USING(contest_id)
LEFT JOIN challenges ch
USING(college_id)
LEFT JOIN (
SELECT
challenge_id
, SUM(total_views) AS tv_sum
, SUM(total_unique_views) AS tuv_sum
FROM
view_stats
GROUP BY
challenge_id
) vs
USING(challenge_id)
LEFT JOIN (
SELECT
challenge_id
, SUM(total_submissions) AS ts_sum
, SUM(total_accepted_submissions) AS tas_sum
FROM
submission_stats
GROUP BY
challenge_id
) ss
USING(challenge_id)
GROUP BY
ct.contest_id
, ct.hacker_id
, ct.name
HAVING
ts_ss + tas_ss + tv_vs + tuv_vs > 0
ORDER BY
ct.contest_id
;
→ 그냥 전부 JOIN하면 되는 거 아닌가 했다가 엄청 해맸음…
SELECT
ct.contest_id
, ct.hacker_id
, ct.name
, IFNULL(SUM(ss.total_submissions), 0) AS ts_ss
, IFNULL(SUM(ss.total_accepted_submissions), 0) AS tas_ss
, IFNULL(SUM(vs.total_views), 0) AS tv_vs
, IFNULL(SUM(vs.total_unique_views), 0) AS tuv_vs
FROM
contests ct
LEFT JOIN colleges cl
USING(contest_id)
LEFT JOIN challenges ch
USING(college_id)
LEFT JOIN view_stats vs
USING(challenge_id)
LEFT JOIN submission_stats ss
USING(challenge_id)
GROUP BY
ct.contest_id
, ct.hacker_id
, ct.name
HAVING
ts_ss + tas_ss + tv_vs + tuv_vs > 0
ORDER BY
ct.contest_id
;
WITH vs_sum AS (
SELECT
challenge_id
, SUM(total_views) AS tv_sum
, SUM(total_unique_views) AS tuv_sum
FROM
view_stats
GROUP BY
challenge_id
)
, ss_sum AS (
SELECT
challenge_id
, SUM(total_submissions) AS ts_sum
, SUM(total_accepted_submissions) AS tas_sum
FROM
submission_stats
GROUP BY
challenge_id
)
SELECT
ct.contest_id
, ct.hacker_id
, ct.name
, IFNULL(SUM(ss.ts_sum), 0) AS ts_ss
, IFNULL(SUM(ss.tas_sum), 0) AS tas_ss
, IFNULL(SUM(vs.tv_sum), 0) AS tv_vs
, IFNULL(SUM(vs.tuv_sum), 0) AS tuv_vs
FROM
contests ct
LEFT JOIN colleges cl
USING(contest_id)
LEFT JOIN challenges ch
USING(college_id)
LEFT JOIN vs_sum vs
USING(challenge_id)
LEFT JOIN ss_sum ss
USING(challenge_id)
GROUP BY
ct.contest_id
, ct.hacker_id
, ct.name
HAVING
ts_ss + tas_ss + tv_vs + tuv_vs > 0
ORDER BY
ct.contest_id
;
select con.contest_id,
con.hacker_id,
con.name,
sum(total_submissions),
sum(total_accepted_submissions),
sum(total_views),
sum(total_unique_views)
from contests con
join colleges col on con.contest_id = col.contest_id
join challenges cha on col.college_id = cha.college_id
left join (select challenge_id,
sum(total_views) total_views,
sum(total_unique_views) total_unique_views
from View_Stats
group by challenge_id) v
on cha.challenge_id = v.challenge_id
left join (select challenge_id,
sum(total_submissions) total_submissions,
sum(total_accepted_submissions) total_accepted_submissions
from Submission_Stats
group by challenge_id) s
on cha.challenge_id = s.challenge_id
group by con.contest_id, con.hacker_id, con.name
having sum(total_submissions) !=0
or sum(total_accepted_submissions) != 0
or sum(total_views) != 0
or sum(total_unique_views) !=0
order by con.contest_id
→ 4개의 값이 동시에 0인 경우를 제외하라고 했으므로 Having 절을 추가
.twb
.twbx
경수님, 재호님이 추천해주신 강의! 꼭 듣기
엄청 멋진 대시보드 발견
Tableau Public VOTD가 뭘까?
팀 대시보드에 참고할 내용
Tableau Barchart Catalogue
London
모양 마크에 내가 넣고 싶은 이미지 넣기
대시보드 안에서 워크시트 바꾸기 ★
필터에서 "전체" 표현하기
택지정보시스템
→ 임대주택 사업지구별로 묶어서 표시하면 좋을 것 같아서 일단 찾아놨음