์์ ์๋ ๊ทธ๋ฅ min, max, sum ๋ฑ์ ์ง๊ณํจ์๋ฅผ ๋ชฉ์ ์ฑ ์์ด ์ฌ์ฉํ๋๊ฒ ๊ฐ์๋ฐ ์ด๋ค ์ํฉ์์ ์ง๊ณํจ์๋ฅผ ์ฌ์ฉํ๋์ง, ์ง๊ณํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฒฐ๊ณผ๊ฐ ์ด๋ป๊ฒ ๋์ถ๋๋์ง ์ ๋ฆฌํ๋ ์๊ฐ์ ๊ฐ์ ธ ๋ณด์๋ค
์์ํฉ๋๋ค!
# ์ง๊ณ ํจ์์ ์ ์์ ์ ์์ฌํญ
์ง๊ณ ํจ์๋ ๊ฐ๋ค์ ์งํฉ์ ๊ณ์ฐํด์ ํ๋์ ๊ฐ์ ๋ฆฌํดํ๋ ํจ์์.
count(*)๋ฅผ ์ ์ธํ๊ณ , ์ง๊ณ ํจ์๋ null ๊ฐ์ ๋ฌด์ํจ.
์ ์์ฌํญ
1) select ๊ตฌ๋ฌธ์์ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค
2) where์ ์ ๋ฐ๋ก ์ง๊ณํจ์ ์ฌ์ฉํ ์ ์์.
๋ณดํต์
1) group by๋ฅผ ํ๊ณ select๋ฌธ์์ ์ง๊ณํจ์๋ฅผ ์ฌ์ฉํ๋ค
1) ~๋ณ๋ก => ๊ทธ๋ฃน๋ณ ๋ฌถ๊ธฐ
2) ๊ทธ ์ดํ => ์ง๊ณํจ์๋ก ๊ณ์ฐํ๊ธฐ (์ปฌ๋ผ๋ช
์ ์)
ex) (์นดํ
๊ณ ๋ฆฌ ๋ณ๋ก) [ํ๋งค๋์ ์ง๊ณํ์์ค]
2) group by๋ฅผ ํ๊ณ having์ ์ ์ง๊ณํจ์๋ฅผ ์ฌ์ฉํ๋ค
3) where์ ์ ์๋ธ์ฟผ๋ฆฌ์์ ์ง๊ณํจ์๋ฅผ ์ฌ์ฉํ ์ ์์.
- ์์
์๋ชป๋ ์ฌ์ฉ
SELECT math_score
FROM scores
WHERE english_score = MIN(english_score)
์ฌ๋ฐ๋ฅธ ์ฌ์ฉ
SELECT math_score
FROM scores
WHERE english_score = (SELECT MIN(english_score) FROM scores)
ํด๋น ์ฌ๋ฐ๋ฅธ ์ฌ์ฉ์๋ where์ ์์ ์๋ธ์ฟผ๋ฆฌ๋ก์จ ์ฌ์ฉํ์๋ค!
์ด๋ ๊ฒ ์ฌ์ฉ๊ฐ๋ฅ!
1. count()
ํน์ ํ ๊ธฐ์ค์ ์ถฉ์กฑํ๋ rows์ ์ ๋ฆฌํดํจ.
count(*) -> null๊ฐ๊น์ง ํฌํจํด์ ๊ฐฏ์๋ฅผ ์ผ๋ค
count(์ปฌ๋ผ) -> null๊ฐ์ ์ ์ธํ๊ณ ๊ฐฏ์๋ฅผ ์ผ๋ค
[ ์์ ]
ํ ์ด๋ธ ์์ฑ ๋ฐ ๊ฐ ์ฝ์
CREATE TABLE Customers(Id integer, Name varchar(100), Visits integer);
INSERT INTO Customers(Id, Name, Visits) values(1, "Amy", 1), (2, "Amy", 2), (3, "Jake", 3), (4, "Terry", 5), (5, NULL, NULL);

[ ๋ฌธ์ 1 ]
null๊ฐ์ ํฌํจํ ๋ชจ๋ ํ์ ์๋ฅผ ์ธ์ 5๊ฐ ๋์จ๋ค
[ ์ฝ๋ ]
SELECT COUNT(*)
FROM Customers
[ ๊ฒฐ๊ณผ ]
5
[ ๋ฌธ์ 2 ]
์ด๋ฆ ์ค Amy, Amy, Jake, Terry ๋ฅผ ์ธ์ ์ด 4๋ฅผ ๋ฆฌํดํจ. (์ด๋ฆ์์ NULL ๊ฐ ์ ์ธํจ.)
[ ์ฝ๋2 ]
SELECT COUNT(Name)
FROM Customers
[ ๊ฒฐ๊ณผ 2 ]
4
[ ๋ฌธ์ 3 ]
์ด๋ฆ ์ค ์ค๋ณต๋๋ ์ด๋ฆ์ ์ ๊ฑฐํ์ฌ Amy, Jake, Terry๋ฅผ ์ธ์ ์ด 3์ ๋ฆฌํดํจ. (์ด๋ฆ์์ NULL๊ฐ ์ ์ธํจ.)
[ ์ฝ๋ 3 ]
SELECT COUNT(DISTINCT Name)
FROM Customers
[ ๊ฒฐ๊ณผ 3 ]
3
2. avg()
์ซ์ํ column์ ํ๊ท ๊ฐ์ ๋ฆฌํดํจ.
NULL ๊ฐ์ ์ ์ธ๋จ.
avg ์ฌ์ฉ์ -> null ๊ฐ์ ๋ฐ์ดํฐ์์ ์ ์ธํ๊ณ ํ๊ท ์ ๊ตฌํ๋ค
sum์ผ๋ก ์ดํฉ์ ๊ตฌํ๊ณ count(*)๋ก ๋๋์ -> null ๊ฐ์ ํฌํจํด์ ํ๊ท ์ ๊ตฌํ
[ ์์ ]

[ ๋ฌธ์ 1 ]
NULL๊ฐ์ ์ ์ธํ๊ณ ํ๊ท ์ ๊ตฌํ๋ ๊ฒฝ์ฐ
[ ์ฝ๋1 ]
SELECT AVG(Visits)
FROM Customers
[ ๊ฒฐ๊ณผ 1 ]
2.75
# ์ค๋ช
: (1+2+3+5)/4 = 2.75
[ ๋ฌธ์ 2 ]
NULL๊ฐ์ ํฌํจํ์ฌ ํ๊ท ์ ๊ตฌํ๋ ๊ฒฝ์ฐ
[ ์ฝ๋ 2 ]
SELECT SUM(Visits) / COUNT(*)
FROM Customers
[ ๊ฒฐ๊ณผ 2 ]
2.2
# ์ค๋ช
: (1+2+3+5)/5 = 2.2
3. sum()
์ซ์ํ column์ ์ดํฉ์ ๋ฆฌํดํจ.
NULL ๊ฐ์ ์ ์ธ๋จ.
[ ์์ ]

[ ์ฝ๋ ]
SELECT SUM(visits)
FROM Customers
[ ๊ฒฐ๊ณผ ]
11
4. min()
์ ํํ column์ ๊ฐ์ฅ ์์ ๊ฐ์ ๋ฆฌํดํจ
5. max()
์ ํํ column์ ๊ฐ์ฅ ํฐ ๊ฐ์ ๋ฆฌํดํจ
# Reference
https://www.codeit.kr/community/questions/UXVlc3Rpb246NjIzZWY4NjM5MGIzMmY0OTBmMWRmM2Rj
'Knowledge๐ฆข > SQL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [SQL] ํ ์ด๋ธ ์๋ฃํ ์ข ๋ฅ (0) | 2024.04.19 |
|---|---|
| [SQL] union๊ณผ union all์ ์ฐจ์ด์ (0) | 2024.04.16 |
| [SQL] SQL ์ฟผ๋ฆฌ๋ฌธ์ ์คํ ์์ (0) | 2024.04.12 |
| [SQL] ๋ฐ์ดํฐ ๊ฐ๊ณต๊ณผ ์กฐ๊ฑด๋ฌธ (0) | 2024.04.05 |
| [SQL] ์ฐ์ฐ์์ ์ข ๋ฅ (0) | 2024.04.04 |