[SQL] Cartesian product를 이용한 소계, 합계 구하기 (DECODE, CASE WHEN..)
한번에 소계와 합계 평균을 구해야 할 때가 있습니다. Oracle에서는 ROLLUP 함수가 있으니 쉽게 구할수 있으나, Sqlite나 예전...Oracle에서 ROLLUP 함수가 없는 시절 DECODE를 사용했더랍니다. (진짜 20년전 얘기 입니다.) 하지만 Sqlite에서는 ROLLUP이란 함수 자체가 없으니 CASE WHEN문을 이용하여 구해 보도록 합니다. 만약 Oracle이었다면 CASE WHEN문 부분을 DECODE로 치환해서 사용하면 됩니다. 목적 둘리와 길동이의 수학과 국어 성적을 갖는 exam_score 테이블이 있습니다. 둘리와 길동의 합계와 소계, 평균을 각각 한번에 구해서 넣고 싶습니다. 최종 원하는 결과는 아래와 같습니다. 사람별로 소계가 존재하고 마지막에 합계가 존재합니다. 데이터..