반응형
SQL 10 – Window functions
Database
Problems
문제 1. 2017년 선거구 'S14000024'의 성, 정당 및 투표를 보여주세요.
정답
1
2
3
4
5
6
7
8
9
|
SELECT lastName, party, votes
FROM ge
WHERE constituency = 'S14000024'
AND yr = 2017
ORDER BY votes DESC
|
cs |
문제 2. RANK 기능을 사용하여 후보들의 순서를 확인할 수 있습니다. (Order By votes DESC)를 사용하여 순위를 매기면 가장 많은 표를 얻은 후보가 1위를 차지하게 됩니다.
정답
1
2
3
4
5
6
7
8
9
|
SELECT party, votes,
RANK() OVER (ORDER BY votes DESC) as posn
FROM ge
WHERE constituency = 'S14000024' AND yr = 2017
ORDER BY party ASC
|
cs |
문제 3. 2015년 선거는 2017년 선거와는 다른 파티션입니다. 우리는 매년 투표 순서만 신경 씁니다.
매년 S14000021에서 각 파티의 순위를 나타내려면 파티션을 사용합니다. yr, 정당, 투표 및 순위를 포함합니다(가장 많은 표는 1).
정답
1
2
3
4
5
6
7
8
9
10
11
|
SELECT yr, party, votes,
RANK() OVER (PARTITION BY yr
ORDER BY votes DESC) as posn
FROM ge
WHERE constituency = 'S14000021'
ORDER BY party, yr
|
cs |
문제 4. Edinburgh constituencies are numbered S14000021 to S14000026.
Use PARTITION BY constituency to show the ranking of each party in Edinburgh in 2017. Order your results so the winners are shown first, then ordered by constituency.
에든버러 선거구의 번호는 S14000021 ~ S140026입니다. 2017년 에든버러에서 각 정당의 순위를 나타내려면 PARTION BY 선거구를 사용하세요. 당선자가 먼저 표시되도록 결과를 정렬한 다음 선거구별로 정렬합니다.
정답
1
2
3
4
5
6
7
8
9
10
11
12
13
|
SELECT constituency, party, votes,
RANK() OVER (PARTITION BY constituency
ORDER BY votes DESC) AS winner
FROM ge
WHERE constituency BETWEEN 'S14000021' AND 'S14000026'
AND yr = 2017
ORDER BY winner, constituency
|
cs |
문제 5. You can use SELECT within SELECT to pick out only the winners in Edinburgh.
Show the parties that won for each Edinburgh constituency in 2017.
정답
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
SELECT constituency, party
FROM (SELECT constituency, party, votes,
RANK() OVER (PARTITION BY constituency
ORDER BY votes DESC) as posn
FROM ge
WHERE constituency BETWEEN 'S14000021' AND 'S14000026'
AND yr = 2017) RK
WHERE RK.posn = 1
|
cs |
문제 6. Count와 GROUP BY를 사용하여 각 당이 스코틀랜드에서 어떻게 했는지 확인할 수 있습니다. 스코틀랜드 선거구는 'S'로 시작합니다.
정답
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
SELECT party,COUNT(*)
FROM (
SELECT constituency, party, votes,
RANK() OVER (PARTITION BY constituency
ORDER BY votes DESC) as posn
FROM ge
WHERE constituency LIKE 'S%'
AND yr = 2017) RT
WHERE RT.posn=1
GROUP BY RT.party
|
cs |
반응형
'공부 > SQL' 카테고리의 다른 글
Programmers 프로그래머스 SQL 문제풀이 01 (0) | 2022.01.21 |
---|---|
SQL 11 – Self Join (0) | 2022.01.13 |
SQL 09 – Numeric Examples (0) | 2022.01.13 |
SQL 08 – More JOIN operations (0) | 2022.01.13 |
SQL Zoo 07 - JOIN (0) | 2022.01.11 |
댓글