Basic Select
Q. Revising the Select Query I
문제 원문
SELECT *
FROM CITY
WHERE CountryCode = "USA" AND POPULATION > 100000;
Q. Weather Observation Station 3
문제 원문
SELECT DISTINCT CITY
FROM STATION
WHERE MOD(ID, 2) = 0;
DISTINCT
- 컬럼에서 중복을 제거한 상태로 조회하는 경우 사용 (without duplicates)
MOD
SELECT MOD(N, M);
SELECT N MOD M;
SELECT N % M;
- N을 M으로 나눈 나머지를 반환
- 짝수, 홀수를 판단하는 데 사용 가능
Q. Weather Observation Station 5
문제 원문
(SELECT CITY, LENGTH(CITY)
FROM STATION
WHERE LENGTH(CITY) = (SELECT MIN(LENGTH(CITY))
FROM STATION)
ORDER BY CITY asc
LIMIT 1)
UNION
(SELECT CITY, LENGTH(CITY)
FROM STATION
WHERE LENGTH(CITY) = (SELECT MAX(LENGTH(CITY))
FROM STATION)
ORDER BY CITY asc
LIMIT 1);
UNION
SELECT 컬럼이름
FROM 테이블이름
UNION
SELECT 컬럼이름
FROM 테이블이름
- 여러 개의 SELECT 문의 결과를 하나의 테이블이나 결과 집합으로 표현할 때 사용
- 이때 각각의 SELECT 문으로 선택된 컬럼(필드)의 개수와 타입은 모두 같아야 하며, 컬럼(필드)의 순서 또한 같아야 함
Advanced Select
Q. Type of Triangle
문제 원문
SELECT
CASE
WHEN A = B AND B = C THEN 'Equilateral'
WHEN A + B <= C THEN 'Not A Triangle'
WHEN A != B AND B != C AND C != A THEN 'Scalene'
ELSE 'Isosceles'
END AS TYPE
FROM TRIANGLES;
CASE문
SELECT
CASE
WHEN 조건
THEN '반환 값'
WHEN 조건
THEN '반환 값'
ELSE '위의 WHEN 조건에 해당 안되는 경우 반환 값'
END
FROM 테이블이름;
Aggregation
Q. The Blunder
문제 원문
SELECT CEILING(AVG(SALARY) - AVG(REPLACE(SALARY,0,'')))
FROM EMPLOYEES;
- 제시된 테이블은 맞는 값으로 구성된 테이블이며, 틀린 값을 REPLACE 함수를 써서 구함
CEILING
SELECT CEILING(숫자)
FROM 테이블이름;
- 소수점 올림: 값보다 큰 정수 중 가장 작은 수를 가져오는 함수
- 올림/반올림/버림 함수는 따로 다시 정리할 것
REPLACE
SELECT REPLACE(컬럼이름, '기존 문자열', '변경할 문자열')
FROM 테이블이름;
Basic Join
Q. Population Census
문제 원문
SELECT SUM(CITY.POPULATION)
FROM CITY JOIN COUNTRY ON CITY.CountryCode = COUNTRY.Code
WHERE CONTINENT = 'Asia';
- 2가지 테이블을 join할 경우 계산하고자 하는 컬럼 이름 앞에 테이블 이름이 와야 함