에듀테크 프로젝트 대시보드
SELECT 기본
조회의 뼈대. PostgreSQL 만의 편의 문법 몇 가지를 함께 봅니다.
FROM → WHERE → GROUP BY → HAVING → SELECT → DISTINCT → ORDER BY → LIMIT/OFFSET그래서 WHERE 절에서는 SELECT 의 별칭(alias)을 못 쓰고, ORDER BY 에서는 쓸 수 있습니다.
WHERE name ILIKE '%한양%' -- 대소문자 무시 LIKE
WHERE grade IN (1, 2)
WHERE created_at >= now() - interval '1 day'
WHERE deleted_at IS NULL
WHERE a IS DISTINCT FROM b -- NULL 을 값처럼 비교 (a<>b 는 NULL 이면 UNKNOWN)
WHERE score BETWEEN 60 AND 100-- 학생별 가장 최근 시험 기록
SELECT DISTINCT ON (student_id) student_id, exam_date, score
FROM exams
ORDER BY student_id, exam_date DESC;DISTINCT ON (cols) 는 그 컬럼 기준 첫 행만 남깁니다. ORDER BY 앞부분이 ON 컬럼과 일치해야 합니다.
-- OFFSET 방식 — 뒤로 갈수록 느려짐(앞 행을 다 세고 버림)
SELECT * FROM posts ORDER BY id DESC LIMIT 20 OFFSET 4000;
-- keyset(seek) 방식 — 항상 빠름
SELECT * FROM posts
WHERE id < :last_seen_id
ORDER BY id DESC
LIMIT 20;(created_at, id) 복합 커서로 정렬 안정성 확보