SQL 문제풀이 복습
문제 링크
한 번 등장한 숫자가 없을 경우 null로 뜨게 해야 함에 주의.
그래서 where절에서 count(*) = 1로 조건을 주면 안 되고
max(num)으로 처리해야 한다.
(where 절로 조건을 주면 해당하는 값이 없을 경우
그냥 빈 결과가 출력됨)
SELECT Max(num) AS "num"
FROM (SELECT num
FROM mynumbers
GROUP BY 1
HAVING Count(*) = 1) a;
SELECT *
FROM Cinema
WHERE description <> 'boring'
AND id%2 = 1
ORDER BY rating DESC;
문제 링크
case when을 써서 조건만 빠짐없이 걸어주면
나머지는 기본적인 서브쿼리와 join 활용이라 어려울 게 없는 문제.
SELECT a.id,
s2.student
FROM (SELECT id,
CASE
WHEN s1.id <> (SELECT Max(id)
FROM seat)
AND s1.id%2 = 1 THEN s1.id + 1
WHEN s1.id = (SELECT Max(id)
FROM seat)
AND s1.id%2 = 1 THEN s1.id
WHEN s1.id%2 = 0 THEN s1.id - 1
end AS "new_id"
FROM seat s1) a
LEFT JOIN seat s2
ON a.new_id = s2.id;