Row에서 요약으로
DISTINCT는 값이 겹치는 row를 걷어내고, 집계 함수는 여러 row를 숫자 하나로 접어.
COUNT(*)는 row 개수를 세.COUNT(col)은 그 컬럼에서 NULL이 아닌 것만 세고.SUM(col),AVG(col),MIN(col),MAX(col)은 이름 그대로야.GROUP_CONCAT(col, sep)은 값들을 구분자로 이어 문자열 하나로 만들어.TOTAL(col)은 SUM과 같은데, 입력이 비었을 때 NULL 대신 0을 돌려줘.
Tip: WHERE 없이 테이블 전체에
SELECT count(*)를 걸면 SQLite에서 O(n)이야. 진짜로 row를 하나씩 훑거든. 자주 부를 거면 count를 캐시하거나 세는 용도의 row를 따로 두는 게 나아. 이건 Postgres도 마찬가지야.