3ํ๋ ์ด๋ ๋๋๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ข ์๊ธด ์์์ผ๋์ง ์๊ฒ ๋ ์ถ์ ๋ง์์ผ๋ก SQL ๋ฌธ๋ฒ์ ๊ฐ๋จํ๊ฒ ๊ณต๋ถํด์ ์ฌ๋ ค๋ณด๊ณ ์ ํฉ๋๋ค. Mode์ SQL ํํ ๋ฆฌ์ผ์ ์ฝ๊ณ ์ ๋ฆฌํ๊ณ ์ค์ตํด๋ณด๊ณ ์์ต๋๋ค. ์๋ชป ์ดํดํ๊ฑฐ๋ ์ค๋ฅ๊ฐ ์๋ ๋ถ๋ถ์ ์๋ ค์ฃผ์๋ฉด ์ ๋ง ๊ฐ์ฌํ๊ฒ ์ต๋๋ค!
Mode์์ ๋ก๊ทธ์ธ ํ ์ report๋ฅผ ๋ง๋์ ์ ๋ฐ๋ผํ์ค ์ ์์ต๋๋ค. ๋งํฌ ์๋์ ๋ฌ์๋๊ฒ ์ต๋๋ค.
SQL์ด๋?
SQL(Structured Query Language)์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด ์ค๊ณ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋๋ค.
SELECT - FROM
ํ ๋ฒ์ ํ๋์ select๋ง ์คํํ ์ ์์ผ๋ฉฐ, SELECT๋ก FROM์์ ๊ฐ์ ธ์จ ๋ฐ์ดํฐ์ ์ด์ ์ ํํ ์ ์์ต๋๋ค.
SELECT A, B, C
FROM tutorial.us_housing_units
๋๋ฌธ์๋ก ์ด select-from์ ์๋ฌธ์๋ก ์จ๋ ์คํ์ด ๋ฉ๋๋ค. ์ฝ๊ธฐ ์ฝ๊ฒ ํ๊ธฐ ์ํ ์ผ์ข ์ ์ฝ์์ด๋ผ๊ณ ํ ์ ์์ต๋๋ค. ๋ณ์ ์ด๋ฆ์ด๋ ํจ์ ์ด๋ฆ์ ์ ํ๋ ๋ช ๊ฐ์ง ํ๊ธฐ ์ฝ์๊ณผ ๊ฐ์ต๋๋ค. ์ด ์ด๋ฆ์ ์๋ฌธ์ + ๊ณต๋ฐฑ์ _๋ก ์ฒ๋ฆฌํ๋ ๊ฒ์ด ๊ธฐ๋ณธ์ด๋ฉฐ, ํธ์๋ฅผ ์ํด ์ด ์ด๋ฆ์ ๋ฐ๊ฟ์ ๋ณด๊ธฐ ์ํด์๋ ์๋์ ๊ฐ์ด ์ธ ์๋ ์์ต๋๋ค.
SELECT A AS "A_region"
FROM tutorial.us_housing_units
์ด๋ ๊ฒ ๋๋ฉด A๋ผ๋ ์ด์ ์ด๋ฆ์ A_region์ผ๋ก ๋ฐ๊พผ ๊ฒ์ด ๋ฉ๋๋ค.
ํ ๊ฐ์ ์ ํ - LIMIT
SELECT year, month, west
FROM tutorial.us_housing_units
LIMIT 100
๋ฐฑ ๊ฐ์ ํ์ ์ ํํฉ๋๋ค. ์ค์ DB์์ ์๋ง๊ฐ์ ํ์ ์ ๋ถ ๋ก๋ํ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ์ค์ด๊ณ , ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ํ์ ํ๋ ๋ฑ์ ์์ ์ ์ํด ํ์ฉํฉ๋๋ค.
๋ฐ์ดํฐ ํํฐ๋ง
SELECT *
FROM tutorial.us_housing_units
WHERE month = 1
WHERE์ ์ด์ฉํด ๋ฐ์ดํฐ ์ค์์ ํํฐ๋ฅผ ๊ฑฐ์ณ ํด๋น ์กฐ๊ฑด์ ํด๋นํ๋ ๋ฐ์ดํฐ๋ง ํ์ธํ ์ ์๋๋ก ํฉ๋๋ค. ํญ์ select - from - where์ ์์๋ก ์ด๋ค. ์ด์ธ์๋ ์กฐ๊ฑด๋ฌธ์์ ์ฌ์ฉํ๋ ๋น๊ต ๋ฐ ๋ ผ๋ฆฌ ์ฐ์ฐ์, ์ฐ์ ์ฐ์ฐ์๋ฅผ ํ์ฉํ ์ ์์ต๋๋ค. ์ผ์ข ์ SQL์ ์กฐ๊ฑด๋ฌธ์ ๋๋ค. ๋ค์ ๋์ฌ CASE์ ์ ์ฌํฉ๋๋ค.
SELECT year,
month,
west,
south,
west + south - 4 * year AS nonsense_column
FROM tutorial.us_housing_units
๊ฐ ์ด๋ผ๋ฆฌ ์ฐ์ ์ฐ์ฐ์ ์ํํ ์๋ ์์ต๋๋ค.
LIKE, ILIKE, _
SELECT *
FROM tutorial.billboard_top_100_year_end
WHERE "group" LIKE 'Snoop%'
์ด ์ด๋ฆ์ ""๋ก, ๋ด์ฉ์ ''๋ก ๋ฌถ๋ ๊ฒ์ด ๊ธฐ๋ณธ์ด๋ผ๊ณ ํฉ๋๋ค.(์ด ์ด๋ฆ๊ณผ ํจ์ ์ด๋ฆ์ด ์ผ์นํ๋ ๊ฒฝ์ฐ์ ๊ตฌ๋ถ์ ์ํด ์ฌ์ฉํฉ๋๋ค). ์ด ๊ฒฝ์ฐ์๋ GROUP BY์ ์ด ์ด๋ฆ group์ ๊ตฌ๋ถํ๊ธฐ ์ํด ํฐ๋ฐ์ดํ๋ก ๊ฐ์ธ์ฃผ์์ต๋๋ค. LIKE๋ group์ด๋ผ๋ ์ด์์ Snoop์ผ๋ก ์์ํ๋ ์ด๋ฆ๋ค์ ์ ๋ถ ์ฐพ์๋ฌ๋ผ๋ ๋ป์ ๋๋ค. ์ฌ๊ธฐ์ %๋ฅผ ์์ผ๋์นด๋ ๋ผ๊ณ ๋ถ๋ฆ ๋๋ค. LIKE๋ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ๊ณ , ๋์๋ฌธ์ ๊ตฌ๋ถ ์์ด ํ๊ณ ์ถ์ผ๋ฉด ILIKE๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
SELECT *
FROM tutorial.billboard_top_100_year_end
WHERE "group" ILIKE 'snoop%'
ํ๋์ ๋ฌธ์๋ง ์์ผ๋์นด๋ ์ ์ฉ์ ํ๊ณ ์ถ๋ค๋ฉด _๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
SELECT *
FROM tutorial.billboard_top_100_year_end
WHERE artist ILIKE 'dr_ke'
IN, BETWEEN
SELECT * FROM tutorial.billboard_top_100_year_end
WHERE artist IN ('Elvis Presley', 'M.C. Hammer', 'Hammer')
python in ๋ช ๋ น์ด์ ๊ฑฐ์ ๊ฐ์ต๋๋ค. ๋ค์ ๋์ค๋ ๋ฆฌ์คํธ ์ค์ ํฌํจ๋๋ ํญ๋ชฉ์ ํํฐ๋งํด์ ๋ณด์ฌ์ค๋๋ค.
SELECT *
FROM tutorial.billboard_top_100_year_end
WHERE year_rank BETWEEN 5 AND 10
-- WHERE year_rank >= 5 AND year_rand <= 10
BETWEEN์ ๋ฒ์๋ฅผ ์ง์ ํ๋ ํํฐ๋ง ๋ฐฉ์์ ๋๋ค. ์ฃผ์์ฒ๋ฆฌ๋ ๋ถ๋ถ๊ณผ ๊ฐ์ ์ญํ ์ ์ํํฉ๋๋ค.
IS NULL, AND, OR, NOT
SELECT *
FROM tutorial.billboard_top_100_year_end
WHERE artist IS NULL
---
SELECT *
FROM tutorial.billboard_top_100_year_end
WHERE year = 2013
AND artist IS NOT NULL
NULL์ธ ํญ๋ชฉ์ด ์๋ ํ์ ์ถ๋ ฅํฉ๋๋ค. NOT์ ์ด์ฉํด ์ ์ธํ๋ ๊ฒ๋ ๊ฐ๋ฅํฉ๋๋ค. ์๋์์ ํ ๋ฒ์ ์์ ๋ก ํ์ธํ์ค ์ ์์ด์.
SELECT *
FROM tutorial.billboard_top_100_year_end
WHERE year = 2013
AND ("group" ILIKE '%macklemore%' OR "group" ILIKE '%timberlake%')
AND/OR์ ์ด์ฉํด ํํฐ๋ง ํญ๋ชฉ์ ๋ ์์ธํ๊ฒ ๊ตฌ๋ถํฉ๋๋ค.
ORDER BY
๋ฐ์ดํฐ ์ ๋ ฌ ๋ฐฉ์์ ๋๋ค. sort ํจ์์ ์ ์ฌํด์.
SELECT *
FROM tutorial.billboard_top_100_year_end
ORDER BY artist
artist ์ ์ํ๋ฒณ ๊ธฐ์ค ์ ๋ ฌ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํฉ๋๋ค. DESC๋ฅผ ์ถ๊ฐํ๋ฉด ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋๋ก ์ค์ ํ ์ ์์ด์.(reverse๊ฐ๋ ๊ณผ ๋์ผ)
SELECT *
FROM tutorial.billboard_top_100_year_end
WHERE year_rank <= 3
ORDER BY year DESC, year_rank
์ฌ๋ฌ์ค ์ ๋ ฌ์ ํ๋ฉด ๋จผ์ ์์ ๋์จ ๊ฒ์ ์ ๋ ฌํ๊ณ , ๊ทธ ๋ด์ฉ์ ๋ง์ถฐ์ ์ดํ๋ฅผ ์ ๋ ฌํฉ๋๋ค.
์ด์ ๋ฒํธ๋ก ํ์ํ๋ ๊ฒ๋ ๊ฐ๋ฅํฉ๋๋ค. (์ผ๋ถ SQL์์๋ ์ง์๋์ง ์์ ์ ์์ด์)
SELECT *
FROM tutorial.billboard_top_100_year_end
WHERE year_rank <= 3
ORDER BY 2, 1 DESC
'๐ฅ Web > โ Back-end | etc.' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Elasticsearch] Index Template ๊ตฌ์ฑํ๊ธฐ with Kibana & Logstash (1) - Setting (0) | 2023.07.06 |
---|---|
[Elasticsearch] Logstash๋ฅผ ํตํด PostgreSQL๊ณผ Elastic Stack ์ฐ๋ํ๊ธฐ (0) | 2023.06.29 |
[Elasticsearch] Logstash ์ฌ์ฉํด๋ณด๊ธฐ (0) | 2023.06.29 |
[Elasticsearch] Elasticsearch ๊ธฐ๋ณธ ๊ฐ๋ ๋ฐ ์ค์น, kibana ์ฐ๋ํ๊ธฐ (1) | 2023.06.29 |
[SQL] SQL ์ค๊ธ (0) | 2021.08.22 |