SELECT COUNT(DISTINCT code) AS country_count
FROM country
WHERE (GNP - GNPOld < 0 or GNPOld is null)
and population >= 10000000; --정답: 34
☠️틀린이유
1. WHERE절의 조건이 아예 잘못 설정되어 있었음!# 고치기 전 WHERE (GNP IS NOT NULL AND GMP <> 0) AND (GNPOld - GNP < 0) # 고치고 난 후 WHERE (GNPOld IS NULL OR GNP - GNPOld < 0)
- 인구 수에 대한 조건이 잘못설정됨
# 고치기 전 HAVING Population >= 1000000 (1,000,000 - 백만) #고치고 난 후 HAVING Population >= 10000000 (10,000,000 - 천만)
-- 방법 1.
SELECT
CityName,
CountryName,
Continent,
Population
FROM (
SELECT
c.Name AS CityName,
co.Name AS CountryName,
co.Continent,
c.Population,
RANK() OVER(PARTITION BY co.Continent ORDER BY c.Population DESC) AS PopulationRank
FROM
city c
JOIN
country co ON c.CountryCode = co.Code
) ranked_cities
WHERE
PopulationRank = 1
ORDER BY
Population DESC;
-- 방법 2.
SELECT
c.Name AS CityName,
co.Name AS CountryName,
co.Continent,
c.Population
FROM city c
JOIN country co ON c.CountryCode = co.Code
WHERE c.Population = (
SELECT MAX(c2.Population)
FROM city c2
JOIN country co2 ON c2.CountryCode = co2.Code
WHERE co2.Continent = co.Continent
)
ORDER BY c.Population DESC;
-- 방법 3.
SELECT
c.Name AS CityName,
co.Name AS CountryName,
co.Continent,
c.Population
FROM city c
JOIN
country co ON c.CountryCode = co.Code
JOIN (
SELECT co.Continent,
MAX(c.Population) AS MaxPopulation
FROM city c
JOIN country co ON c.CountryCode = co.Code
GROUP BY co.Continent
) max_pop
ON co.Continent = max_pop.Continent
AND c.Population = max_pop.MaxPopulation
ORDER BY c.Population DESC;
☠️틀린이유
1. Population 컬럼 대신 ranking이 들어가벌임...# 고치기 전 SELECT ..., a.ranking # 고치고 난 후 SELECT ..., a.Population
QCC.. 너란 녀석... 친해지기 으렵긋다....
해설 강의 들을 때 느꼈던 감정은 딱 저거다. 나름 오류 나진 않았구 잘 했는데;;
그냥 틀렸구나😂😂 하구 느꼈다
다 틀렸긴 했지만 거의 어떤 부분에서 틀렸는지 금방 알아서 다행이라고 생각했다.
그만큼 SQL공부를 나름(?) 열심히 했다고 보여주는것 같아서 말이다ㅎㅎ
오늘 파이썬 라이브세션도 들어서 써야 하는데,, 아직 필기가 더 필요한 부분(클래스 관련)이 있어서🫠🫠 조금 더 적고 정리하면서 적어보려고 한다!
그래서 일단 오늘 진행한 가장 중요했던 QCC만 먼저 풀이를 적었다!