SELECT DISTINCT CITY
FROM STATION
WHERE MOD(ID, 2) = 0
-- WHERE ID % 2 = 0
SELECT ROUND(SQRT(POW(MAX(LAT_N) - MIN(LAT_N),2) + POW(MAX(LONG_W) - MIN(LONG_W),2)), 4)
-- ROUND(SQRT(b-a,2) + POW(d-c,2)), 4)
-- , MIN(LAT_N) AS a
-- , MAX(LAT_N) AS b
-- , MIN(LONG_W) AS c
-- , MAX(LONG_W) AS d
FROM STATION
문제 및 수학 공식 문서 꼼꼼히 읽기
문제에 수학 공식이 주어지고 대입만 하면 되는 문제다.
√(b-a)^2+(d-c)^2
풀이 1
SELECT S.Name
FROM Students S
INNER JOIN Friends F
ON S.ID = F.ID
INNER JOIN Packages PS
ON S.ID = PS.ID
INNER JOIN Packages PF
ON F.Friend_ID = PF.ID
WHERE PF.Salary > PS.Salary
ORDER BY PF.Salary
풀이 2
SELECT S.Name
FROM Friends F
INNER JOIN Students S
ON F.ID = S.ID
INNER JOIN Packages PS
ON F.ID = PS.ID
INNER JOIN Packages PF
ON F.Friend_ID = PF.ID
WHERE PS.Salary < PF.Salary
ORDER BY PF.Salary
root: 부모 노드가 존재하지 않음
leaf: 자식 노드가 존재하지 않음 = p(부모) 칼럼에 존재하지 않음
inner: 그 외
SELECT N
, CASE
WHEN P IS NULL THEN 'Root'
WHEN N IN (SELECT DISTINCT P FROM BST) THEN 'Inner'
ELSE 'Leaf'
END AS nodetype
FROM BST
ORDER BY N
SELECT DISTINCT B1.N
, CASE
WHEN B1.P IS NULL THEN 'Root'
WHEN B2.N IS NULL THEN 'Leaf'
ELSE 'Inner'
END AS nodetype
FROM BST B1
LEFT OUTER JOIN BST B2
ON B1.N = B2.P
ORDER BY B1.N;
1번 서브 쿼리를 이용하는 것이 훨씬 깔끔하다.
2번 방식은 LEFT OUTER JOIN에 대한 이해를 돕기 위한 쿼리이며, 이런 방식도 있다는 것만 알아두자.