SELECT DISTINCT CITY
FROM STATION
WHERE CITY REGEXP '^[aeiou]';
SELECT DISTINCT CITY
FROM STATION
WHERE CITY REGEXP '[aeiou]$';
LIKE
와 같은 패턴 매칭 연산자 (정규표현식). 추가적인 정리는 여기에SELECT DISTINCT CITY
FROM STATION
WHERE CITY REGEXP '^[aeiou]' AND CITY REGEXP '[aeiou]$';
SELECT ROUND(MAX(LAT_N)-MIN(LAT_N) + MAX(LONG_W)-MIN(LONG_W), 4)
FROM STATION;
Manhattan Distance
p1(x1, y1)과 p2(x2, y2) 간 거리 구하고자 할 경우
ROUND
SELECT ROUND(숫자, 자릿수 n) -- 숫자를 소수점 이하 n번째 자리로 반올림
SELECT TRUNCATE(SQRT(POW(MAX(LAT_N)-MIN(LAT_N),2)+POW(MAX(LONG_W)-MIN(LONG_W),2)), 4)
FROM STATION;
SELECT POW(x, y); --- x의 y제곱 값을 반환
SELECT SQRT(x); --- 양수 x의 제곱근 반환
SELECT TRUNCATE(10.49, 1); --- 10.4
SELECT COUNTRY.Continent, FLOOR(AVG(CITY.Population))
FROM CITY JOIN COUNTRY ON CITY.CountryCode = COUNTRY.Code
GROUP BY COUNTRY.Continent;
SELECT FLOOR(3.24); --- 3
대륙별 도시들의 '평균' 인구를 구하려면 AVG를 한 후 GROUP BY를 해줘야 함.
안 그러면 에러 남.
GROUP BY를 사용하는 경우, SELECT할 수 있는 컬럼은 GROUP BY에 나열된 컬럼과 SUM(), COUNT() 같은 집계 함수(Aggregation Function)으로 한정. 따라서 SQL 표준 문법은 GROUP BY 사용시 SELECT의 컬럼 중 집계함수에 쓰이는 것을 제외한 모든 칼럼을 기입해야 한다.
SELECT IF(GRADES.Grade<8, NULL, STUDENTS.Name), GRADES.Grade, STUDENTS.Marks
FROM STUDENTS JOIN GRADES
ON STUDENTS.Marks BETWEEN GRADES.Min_Mark AND GRADES.Max_Mark
ORDER BY GRADES.Grade DESC, STUDENTS.Name, STUDENTS.Marks;
SELECT 테이블1.컬럼명, 테이블2.컬럼명
FROM 테이블1, 테이블2
WHERE 테이블1.컬럼명1 BETWEEN 테이블2.컬럼명1 AND 테이블2.컬럼명2;
출처: https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=pjok1122&logNo=221542110221
FROM STUDENTS AS S
JOIN GRADES AS G
와 같이 별칭을 지정해주면 더 간단한 쿼리를 작성할 수 있다.
SELECT IF(조건문, 참일 때 값, 거짓일 때 값)