SQL 문제풀이 복습
문제 링크
group_concat과 concat을 조합해서 쓰는 문제.
power와 factor의 부호에 따라
경우의 수만 case when으로 잘 커버해 주면
그 뒤부터는 크게 어렵지 않다.
SELECT CONCAT(GROUP_CONCAT(term ORDER BY POWER DESC SEPARATOR ''), '=0') AS
"equation"
FROM (SELECT power,
factor,
CASE
WHEN power = 0
AND factor > 0 THEN CONCAT('+', factor)
WHEN power = 0
AND factor < 0 THEN factor
WHEN power = 1
AND factor > 0 THEN CONCAT('+', factor, 'X')
WHEN power = 1
AND factor < 0 THEN CONCAT(factor, 'X')
WHEN power > 1
AND factor > 0 THEN CONCAT('+', factor, 'X', '^', power)
WHEN power > 1
AND factor < 0 THEN CONCAT(factor, 'X', '^', power)
END AS "term"
FROM Terms) a;
SELECT b.bus_id,
COUNT(passenger_id) AS "passengers_cnt"
FROM Buses b
LEFT JOIN (SELECT passenger_id,
MIN(b.arrival_time) AS "min_bus"
FROM Buses b
JOIN Passengers p
ON b.arrival_time >= p.arrival_time
GROUP BY 1) a
ON b.arrival_time = a.min_bus
GROUP BY 1
ORDER BY 1;
문제 링크
와 이건 어렵다;
풀었던 기록이 없는 걸로 봐선 처음 업데이트된 문제인 것 같은데,
얘는 내일이나 다음 주에 다시 풀어봐야겠네.