반응형
문제 링크입니다!
문제
=> Julia는 학생들에게 코딩 문제를 만들어보라고 했다.
질의를 작성하여 hacker_id, 이름 및 각 학생이 만든 총 도전 횟수를 출력해라.
총 도전 횟수별 내림차순으로 결과를 정렬해라.
둘 이상의 학생이 동일한 수의 문제를 만든 경우 hacker_id를 기준으로 결과를 정렬해라.
두 명 이상의 학생이 동일한 수의 과제를 만들었고, 그 횟수가 생성된 최대 과제 수보다 적으면, 해당 학생을 결과에서 제외해라.
풀이
with data
as
(select h.hacker_id as id, h.name as name, count(h.hacker_id) as cnt
from
hackers as h
join challenges as c on h.hacker_id = c.hacker_id
group by h.hacker_id, h.name)
select id, name, cnt
from data
where
cnt = (select max(cnt)
from data)
or
cnt in (select cnt
from data
group by cnt
having count(cnt) = 1)
order by cnt desc, id
- WITH : CTE(공통 테이블 식)라고도 하는 임시로 이름이 지정된 결과 집합을 지정. 단순 쿼리에서 파생되며 단일 SELECT, INSERT, UPDATE, DELETE 또는 MERGE 문 실행 범위 내에서 정의.
WITH common_table_expression(Transact-SQL) - SQL Server
쿼리에서 CTE(공용 테이블 식)를 사용하는 방법의 Transact-SQL 참조입니다.
docs.microsoft.com
'HackerRank - MS SQL Server' 카테고리의 다른 글
[해커랭크/MS SQL] SQL Project Planning (0) | 2022.04.08 |
---|---|
[해커랭크/MS SQL] Contest Leaderboard (0) | 2022.04.08 |
[해커랭크/MS SQL] Draw The Triangle 2 (0) | 2022.03.29 |
[해커랭크/MS SQL] Draw The Triangle 1 (0) | 2022.03.29 |
[해커랭크/MS SQL] Weather Observation Station 20 (0) | 2022.03.29 |
댓글