19 Fri
๋ฐ์ดํฐ ๋ถ์์ ์ํ ์ค๊ธ SQL
OT
๊ธฐ์ด SQL๊ณผ ๋์ผ
๋ณด๊ณ ์ถ์ ๋ฐ์ดํฐ ์์ฝํ๊ธฐ
COUNT, SUM, AVG, MIN/MAX
SELECT COUNT(*)
FROM Customers;
COUNT
ํด๋น ์ปฌ๋ผ์ ๊ฐ์๋ฅผ ์ผ๋ค.
๋ง์ฝ NULL ๊ฐ์ด ์๋ค๋ฉด ์ธ์ง ์๋๋ค
EX) Num = [1, 2, 3, 4, NULL] =>
COUNT(Num)
=> 4
DISTINCT๋ฅผ ์ฌ์ฉํด ์ ์๋ ์๋ค.
EX)
SELECT COUNT(DISTINCT Num)
=> 3
SELECT SUM(price)
FROM Products;
SUM
๋ฐ์ดํฐ๋ค์ ์ดํฉ์ ๊ตฌํ๋ค.
AVG
๋ฐ์ดํฐ๋ค์ ํ๊ท ์ ๊ตฌํ๋ค
์ด ๋ NULL์ ๊ฐ์๋ ์ธ์ง ์๊ธฐ ๋๋ฌธ์ NULL์ ์ ์ธํ ๊ฐ์๋ก ๋๋ ๊ฐ์ ์ป๊ฒ๋๋ค.
๋ฐ๋ผ์ AVG() ํจ์๋ฅผ ์ธ์ง SUM()/COUNT() ํจ์๋ฅผ ์ธ์ง๋ฅผ ์ ๊ณ ๋ คํด์ผ ํ๋ค
MAX
๋ฐ์ดํฐ ์ค ์ต๋๊ฐ์ ๊ตฌํ๋ค
MIN
๋ฐ์ดํฐ ์ค ์ต์๊ฐ์ ๊ตฌํ๋ค
GROUP BY & HAVING
SELECT SupplierID, Categoryid, AVG(Price) AS avg_price
FROM Products
GROUP BY SupplierID, Categoryid
HAVING avg_price >= 100
GROUP BY
: ํน์ ์ปฌ๋ผ์ ๊ธฐ์ค์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณผ ๊ฒฝ์ฐ ์ฌ์ฉํ๋คํน์ SUM์ ํ ๊ฒฝ์ฐ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์ง๋ ์๋๋ค
์ผ๋ถ ๋ฐ์ดํฐ๋ง์ ์กฐ์ํด์ ๋ด์ผํ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค
GROUP BY
๋ค์ ์ค๋ ์ปฌ๋ผ๋ช ์SELECT
๋ค์๋ ๊ฐ์ด ์์ผ ์์๋ณด๊ธฐ๊ฐ ์ฝ๋คSELECT
๋ค์ ์ค๋ ์์๋๋ก Index๋ฅผGROUP BY
์ ์ ์ฉํ ์ ์๋คEX)
GROUP BY 1, 2
=GROUP BY SupplierID, Categoryid
๊ทธ๋ฌ๋ ๊ถ์ฅํ๋ ๋ฌธ๋ฒ์ ์๋๋ค. ์ปฌ๋ผ๋ช ์ ์ ํํ๊ฒ ๋ฐํ๋ ๊ฒ์ด ์ข์
--
: line comment/* */
: block commentHAVING
:GROUP BY
์ ๋ํ ์กฐ๊ฑด์ ์ํด ์ฌ์ฉํ๋คWHERE
๋ฅผ ์ฌ์ฉํ์ง ์๋ ์ด์WHERE
๋GROUP BY
์ด์ ์ ๋จผ์ ์ ์ฉ๋๊ธฐ ๋๋ฌธ์ ์ฌ๋ฐ๋ฅธ ๋ฐ์ดํฐ๊ฐ ๋ถ๋ฌ์์ง์ง ์๋๋ค.GROUP BY
์ดํ์ ์กฐ๊ฑด์ด ์ ์ฉ๋์ด์ผ ํ๋ฉฐWHERE
๋GROUP BY
์์ ํญ์ ์์ผ ํ๋ฏ๋ก ๊ทธ ๋์HAVING
์ ์ฌ์ฉํ๋ค
AS
: ํน์ ๋ฐ์ดํฐ์ ์ด๋ฆ์ ์ฌ์ฉ์๊ฐ ์ ์ํ ๋ ์ฌ์ฉ
์กฐ๊ฑด๋ฌธ
CASE
SELECT CASE
WHEN categoryid = 1 THEN '์๋ฃ'
WHEN categoryid = 2 THEN '์กฐ๋ฏธ๋ฃ'
ELSE '๊ธฐํ'
END AS 'categoryName', *
FROM Products

CASE ~ END
: ์กฐ๊ฑด์ ํตํด ๋ฐ์ดํฐ ์ปฌ๋ผ์ ์ฌ์์ฑ ํ ๋ ์ฌ์ฉํ๋คWHEN
: ์กฐ๊ฑด์ ๋ช ์ํ๋ค. ๋ ผ๋ฆฌ ์ฐ์ฐ์AND
๋OR
๋ฅผ ์ฌ์ฉํ ์ ์๋คTHEN
: ์กฐ๊ฑด์ ๋ง์กฑํ๋ฉด ๋ฐ์ดํฐ๋ฅผ ์ ์ํ๋คELSE
: ๋ชจ๋ ์กฐ๊ฑด์ ๋ง์กฑํ์ง ์๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ํ๋ค
ํ ์ด๋ธ ํผ๋ด
SELECT AVG(CASE WHEN categoryid = 1 THEN PRICE END)
AS category1_avg_price,
AVG(CASE WHEN categoryid = 2 THEN PRICE END)
AS category2_avg_price,
AVG(CASE WHEN categoryid = 3 THEN PRICE ELSE NULL END)
AS category3_avg_price
FROM Products
๋ฐ์ดํฐ๋ฅผ ์์ฝํ๋ ํ๋ฅผ ์์ฑํ๋ ์ผ
Last updated
Was this helpful?