1. The Blunder
2. Population Census
3. African Cities
4. Higher Than 75 Marks
1. The Blunder
조건 1) salary 값의 평균에서 잘못 계산한 salary의 평균 빼기
조건 2) 올림으로 계산하기
SELECT CEIL(AVG(salary) - AVG(REGEXP_REPLACE(salary, '[0]', '')))
FROM employees;
- 잘못 계산한 salary를 구하기 위해 REGEXP_REPLACE를 사용하였다.
- salary의 0을 없는 것처럼 처리해주기
- CEIL을 이용해 올림으로 계산하였다.
2. Population Census
조건 1) city 테이블과 country 테이블 JOIN하기
조건 2) country 테이블의 continent가 'Asia'라는 조건 달아주기
조건 3) city 테이블의 population 합계 추출하기
SELECT SUM(city.population)
FROM city
INNER JOIN country
ON city.countrycode = country.code
WHERE country.continent = 'Asia';
- city의 countrycode와 country의 code를 기준으로 두 테이블을 INNER JOIN 해주었다.
- WHERE절에 continent가 'Asia'라는 조건을 달아주었다.
3. African Cities
조건 1) city 테이블과 country 테이블 JOIN하기
조건 2) country 테이블의 continent가 'Africa'라는 조건 달아주기
조건 3) city 테이블의 name 추출하기
SELECT city.name
FROM city
INNER JOIN country
ON city.countrycode = country.code
WHERE country.continent = 'Africa';
- city의 countrycode와 country의 code를 기준으로 두 테이블을 INNER JOIN 해주었다
- WHERE 절에 continent가 'Africa'라는 조건을 달아주었다.
4. Higher Than 75 Marks
조건 1) marks가 75보다 커야한다.
조건 2) 이름의 마지막 3글자를 기준으로 정렬 해주어야 한다. 만약 이름이 같다면 ID를 기준으로 오름차순 해야한다.
SELECT name
FROM students
WHERE marks > 75
ORDER BY RIGHT(name, 3), id ASC;
- marks가 75보다 크다는 조건을 WHERE절에 적었다.
- RIGHT 함수를 이용해 name의 오른쪽 3글자만 추출해 정렬 조건에 넣어 주었다. 그 다음 조건으로는 id를 추가했다.
'SQL > SQL 문제' 카테고리의 다른 글
[SQL] HackerRank - Placements(M) (0) | 2022.06.01 |
---|---|
[SQL] HackerRank - The Report(M) (0) | 2022.06.01 |
[SQL] HackerRank - Employee, Revising 5문제(E) (0) | 2022.05.17 |
[SQL] HackerRank - Revising, Select, Population, Japan 9문제(E) (0) | 2022.05.16 |
[MySQL] 프로그래머스 SQL 고득점 Kit (0) | 2022.02.28 |