1. ์ํ๋ ๋ ์ง๋ณ ํน์ ๊ธฐ๊ฐ๋ณ๋ก ์๋ฅด๊ธฐ Truncate์ ์ถ์ฝ ํํ์ธ trunc๊ฐ ๋ค์ด๊ฐ ํจ์์ด๋ค. date_trunc ์๋ ๋จ์ด ๋ป ๊ทธ๋๋ก ๋ ์ง๋ฅผ ์๋ผ๋ธ๋ค, ์ ์ฌํ๋ค. ์ง๊ด์ ์ด๋ค. date_trunc(์ ์ฌ ๋จ์, ์ ์ฌ ๋์) ์ ์ฌ ๋์ ์์น์ ๋ ์ง ํน์ ์๊ฐ ๊ฐ์ด ํํ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ๋๋ช
์ ์
๋ ฅํ๋ค. (type timestamp, timestamp with time zone ๋๋ interval์ ๊ฐ) ํด๋น ๋ ์ง๋ฅผ ์ด๋ ์ ๋์ ์ ๋ฐ๋๋ก ์ชผ๊ฐค ๊ฒ์ธ์ง ๋จ์๋ฅผ ์ง์ ํ๋ค. (๋ฐํ ๊ฐ๋ ๋ง์ฐฌ๊ฐ์ง๋ก type timestamp, time zone ๋๋ interval) date_trunc('year', timestamp) // ์ฐ๋๋ณ date_trunc('month', timestamp) // ์๋ณ date_..
* velog์์ ํฌ์คํ
ํ๋ ๊ธ์ ์ฎ๊ฒจ์์ต๋๋ค. ์ ์ ๋ณ๋ก ๊ตฌ๋งคํ ์ํ๊ณผ ๊ฐ๊ฒฉ์ ๋ํด ์๊ณ ์๋ ํ
์ด๋ธ orders๊ฐ ์๋ค ๋จผ์ , ์ ์ ๋ณ๋ก ๊ตฌ๋งค์ก์ ํฉ์ฐ์ ๊ตฌํ๋ ค๋ฉด? select์ from์ ๋ง์ผ๋ก ์ถฉ๋ถํ๋ค. FROM ์ฃผ๋ฌธ ๋ด์ญ ์ค์์(orders) SELECT GROUP BY ๊ณ ๊ฐ ๋ณ๋ก(id) ๊ตฌ๋งค์ก์ ํฉ์ฐ(sum price)์ ๋ณด์ฌ์ค SQL ์ฟผ๋ฆฌ๋ฌธ select id, sum(price) from orders group by id ์กฐํ ๊ฒฐ๊ณผ ํ์ง๋ง ๋ฐ์ดํฐ๋ฅผ ๋ฝ๋ค ๋ณด๋ฉด ์ด๋ ๊ฒ ๋จ์ํ๊ฒ ์ ์ฒด ๋ฆฌ์คํธ๋ณด๋ค๋, ์ต์ 1๊ฐ ์ด์์ ์กฐ๊ฑด์ด ๋ค์ด๊ฐ๋ ๊ฒฝ์ฐ๊ฐ ๋ ๋ง๋ค. ๊ทธ๋ด ๋ ์ฌ์ฉํ ์ ์๋ ๊ฒ์ด having ์ ๊ณผ ๊ธฐ๋ณธ ๊ตฌ๋ฌธ์ธ where ์ ์ด๋ค. HAVING ์ ๊ณผ WHERE ์ ์ ์ฐจ์ด ์ด ๋ ๊ฐ๋ ๊ฐ๊ฐ์ ๋ชฉ์ ์ด ๋ค๋ฅด๋ค...
* velog์์ ํฌ์คํ
ํ๋ ๊ธ์ ์ฎ๊ฒจ์์ต๋๋ค. ์ธ์คํ๊ทธ๋จ์ 2๊ฐ ํ
์ด๋ธ์ด ์๋ค๊ณ ๊ฐ์ ํด๋ณด์. ํ๋๋ ์ธ์คํ๊ทธ๋จ์ ์ ์ ์ ๋ณด(users)๋ฅผ ๋ ๋ค๋ฅธ ํ๋๋ ๊ฐ ์ ์ ๊ฐ ์์ฑํ ํฌ์คํธ์ ์ ๋ณด(posts)๋ฅผ ๋ด๊ณ ์๋ค. dots ์ด ์ฌ๋์ ์ธ์คํ๊ทธ๋จ ์ค๋
์ธ ๋ฏ... ์ดํด๋ฅผ ๋๊ธฐ ์ํด users ํ
์ด๋ธ๋ ๊ฐ์ด ์ค๋นํ์ผ๋, ์๋ ์์๋ถํฐ๋ 2๊ฐ ํ
์ด๋ธ ๊ฐ Join์ ์๋ตํ๊ณ posts ํ
์ด๋ธ๋ง์ผ๋ก ์ค๋ช
ํ๊ฒ ๋ค. Q1. ์ ์ ๋ณ๋ก ์คํ ๋ฆฌ์ ๊ฐ์๋ฅผ ์นด์ดํธ ํ์ธ์ ๊ฐ๋จํ๋ค. ์คํ ๋ฆฌ์ ๊ฐ์๋ฅผ ์ธ๋ ค๋ฉด ์คํ ๋ฆฌ ๊ฐ์ด contents ํ๋๋ก ๋ค์ด๊ฐ ์๋ posts ํ
์ด๋ธ์์ ๊ฐ์ ธ์์ผํ๋ค. FROM ํด๋น posts ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ WHERE contents ๊ฐ์ด ์คํ ๋ฆฌ๋ผ๋ ์กฐ๊ฑด์ ๊ฑธ๊ณ SELECT ๊ทธ์ ๋ง๋ ํฌ์คํธ๋ง countํด์ ..