본문 바로가기
HackerRank - MS SQL Server

[해커랭크/MS SQL] Challenges

by nomeleon 2022. 4. 1.
반응형

문제 링크입니다!

 

문제

 

=> 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

 

댓글