평균 구하기, 반올림 값 구하기
날짜 포맷 변경하기, DATE 데이터형 데이터에서 월 추출하기
GROUP BY 절이 있으면 SELECT 절에는 GROUP BY 절에서 사용 했던 attribute나 집계 함수가 적용 된 값 이외에는 사용할 수 없다.
LIKE "%"로 Pattern matching 하기, ORDER BY로 오름차순 정렬하기
IFNULL(Column명, "NULL일 경우 대체할 값") 으로 NULL값 처리하기
조건문에서 OR 사용하기, DATE_FORMAT() 함수로 날짜의 포맷 변경하기
YEAR() 함수로 DATE 데이터형 데이터로부터 년도를 추출하기, DATE_FORMAT() 함수로 날짜의 포맷 변경하기
ORDER BY를 이용하는 매우 기초적인 문제
SELECT *로 모든 레코드 조회하기
HAVING절로 group을 필터링하기
UNION/UNION ALL로 테이블 합집합 구하기, SELECT NULL AS A로 null값이 들어가 있는 컬럼 추가해서 조회하기
ORDER BY x DESC으로 역순(내림차순)으로 정렬하기
ORDER BY x로 오름차순 정렬하기
WHERE절의 부정연산자는 != "Aged", <> "Aged", NOT IN ("Aged") 모두 가능하다. NULL일 때에는 !=를 쓰면 안되고 IS NOT NULL을 써야 한다.
ORDER BY로 오름차순 정렬하기
ORDER BY 절에서 여러 가지 기준으로 정렬하기
LIMIT으로 원하는 개수의 결과만 출력하기
YEAR()로 년도 추출하기, BETWEEN x AND y로 x이상 y이하 값 구하기, COUNT(*)로 튜플의 개수 구하기
MAX()로 최대 값 구하기
서브 쿼리로 WHERE 절에서 MAX() 활용하기
MAX(DATETIME형 데이터)로 최신 날짜 구하기
MIN(DATETIME형 데이터)로 제일 오래된 날짜 구하기
COUNT(*)로 총 튜플의 수 구하기
(틀렸던 문제) DISTINCT로 중복 제거하고 COUNT로 개수 세기
IFNULL() 함수로 NULL 값을 문자열로 대체하기, LIKE로 Pattern matching 하기, ORDER BY로 오름차순 정렬하기
WHERE절에서 IS NULL을 이용해서 NULL인 튜플들 골라내기
WHERE절에서 IS NOT NULL로 NULL이 아닌 튜플들 골라내기
IFNULL() 함수로 NULL 값을 문자열로 대체하기
WHERE절에서 IS NOT NULL로 NULL이 아닌 튜플들 골라내기, COUNT(*) 집계 함수로 총 튜플 수 구하기, AS로 별칭 달기
FROM절에서 EQUIJOIN 수행하기
(참고) 서브 쿼리를 여러 번 중첩해서 원하는 결과 가져오기
ORDER BY 절에서 +와 SUM() 집계 함수를 이용해서 정렬하기, GROUP BY를 수행 한 뒤 SUM() 집계 함수를 사용해서 각 그룹 별로 총합량 구하기
Join을 하고, GROUP BY를 수행 한 뒤 SUM() 집계 함수를 사용해서 각 그룹 별 총합량 구하기
LEFT JOIN, 혹은 RIGHT JOIN으로 한 쪽은 전부 출력하고, 다른 한 쪽은 매칭 된 것은 그대로 출력하고 매칭 되지 않았다면 NULL로 출력하기
(참고) DATETIME은 최신일수록 더 큰 값이다.
LEFT JOIN으로 왼쪽 테이블은 모두 출력하고 오른쪽 테이블은 매칭된 데이터만 출력하기, DATETIME은 최신일수록 더 큰 값이다
AND는 OR보다 우선순위가 높은데, 괄호로 연산 우선순위 높이기
GROUP BY로 Grouping 하고, 그 group을 대상으로 SUM() 집계 함수를 적용하여 각 그룹별 총합량 구하기
GROUP BY로 Grouping 하기
GROUP BY절에서 사용하지 않은 attribute를 1. WITH로 만든 임시 테이블을 이용하여 SELECT절에서 사용하기, 2. WHERE절에서 서브 쿼리를 이용해서 SELECT절에서 사용하기
GROUP BY절로 월별 자동차별 대여 횟수를 구하고, WITH로 임시 테이블을 만들어서 전체 대여 회수를 구하기
GROUP BY로 그룹을 만들고, SUM() 집단 함수로 총 판매량 구하기
GROUP BY절에서 사용하지 않은 attribute를 서브 쿼리나 WITH로 만든 임시 테이블을 이용하여 SELECT절에서 사용하기
(틀렸던 문제) CASE WHEN 조건문1 THEN '값1' ELSE '값2' END, IF(조건문, TRUE일 때 값, FALSE일 때 값), IFNULL(컬럼, NULL일 때 대체할 값)
GROUP BY로 Grouping을 하고, 각 group별 총 거래량을 SUM() 집단 함수로 구해서 출력하기
(참고) GROUP BY로 Grouping을 하는 기본적인 문제, 그러나 문자열 검색에서 REGEXP()라는 정규식을 이용하는 함수가 있다는 것을 알게 된 문제
GROUP BY로 Grouping을 하는 기본적인 문제, 그러나 3개의 테이블을 join해볼 수 있는 문제였다.
GROUP BY로 Grouping을 하는 기본적인 문제
(참고) GROUP BY 절에서 Grouping한 group에 대해서 HAVING 절로 필터링 수행하기, SQL문의 쿼리 실행 순서는 FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY
GROUP BY를 수행하기 전에 WHERE절에서 필터링을 수행하기
(틀렸던 문제) 문제 자체는 간단한 GROUP BY 문제이나, 조건을 잘 이해하지 못해서 틀린 문제
(참고) GROUP BY 문제이기는 한데.. TRUNCATE(PRICE, -4)로 천의 자리까지 버리기 가능. ROUND(PRICE, -4)도 가능. FLOOR()로 천의 자리까지 버리려면 10000으로 나누고 함수를 적용한 다음 다시 10000을 곱해야 한다.
TIMESTAMP 데이터인 APNT_YMD Column을 DATE_FORMAT(APNT_YMD, "%Y-%m-%d")로 2022-04-13 형식으로 변환하여 비교하기
DATE_FORMAT() 함수로 DATE형 데이터의 날짜 형식 바꾸기
(참고) DATEDIFF(), TIMEDIFF(), PERIOD_DIFF(), TIMESTAMPDIFF()의 사용법
MONTH() 함수로 몇 월인지 알아내고, DISTINCT로 중복을 제거하는 문제
(참고) DATEDIFF()로 대여 기간 구하기, AVG()로 평균 구하기, ROUND()로 원하는 소숫점 자리에서 반올림하기
Pattern matching(LIKE)와 '%abc%' 또는 '_abc__'로 원하는 문자열 찾기
YEAR(), MONTH()로 년과 월을 구하고, DATEDIFF()로 대여 기간을 구하며 DATE_FORMAT()으로 원하는 형태로 날짜를 출력하는 문제
IN으로 집합 내에 포함되는지 확인하기
(참고) UPPER(), LOWER() 함수로 대문자 혹은 소문자로 만들기
LIKE를 이용해서 Pattern matching하기, SELECT절에서 CASE문을 이용해서 조건에 따라 값이 달라지는 Column 추가하기
(틀렸던 문제) DATEDIFF() 함수는 "첫 번째 인자 - 두 번째 인자"가 결과값이므로 순서에 유의하자.
(참고) SUBSTR() 함수로 문자열 자르기
DATE_FORMAT(DATETIME, "%Y-%m-%d") 함수로 시:분:초를 제외하고 년-월-일만 출력하도록 바꾸기
(참고) WITH RECURSIVE 구문으로 재귀적으로 원소를 추가하는 가상 테이블 만들기
JOIN으로 인해서 겹치는 컬럼명을 점 표기법으로 구분하기(ex: A.NAME)
아이템 정보 테이블과 아이템 트리 테이블에 대해 이중 JOIN문을 이용하여 업그레이드 된 아이템에 대한 정보를 가져오기
OR로 여러 컬럼에 대해서 조건문 적용하기
비트 연산자(&, |, ^, ~)를 이용해서 해당 비트가 설정되어 있는지 확인하기