1. GROUP BY

 

๐Ÿ‹ ๊ธฐ์ค€์ด ๋˜๋Š” ํ•„๋“œ๋ฅผ ๋’ค์— ์ ์–ด์ฃผ๋ฉด ๊ธฐ์ค€ ํ•„๋“œ๊ฐ€ ๊ฐ™์€ ๋ ˆ์ฝ”๋“œ๋ฅผ ๋ชจ์•„ ํ†ต๊ณ„๊ฐ’์„ ๊ตฌํ•จ

๐Ÿ‹ GROUP BY ๊ตฌ๋ฌธ์€ ๊ทธ๋ฃนํ•‘์„ ํ•ด ์ค„ ๋ฟ์ด๋ฉฐ ์–ด๋–ค ํ†ต๊ณ„๋ฅผ ๋‚ผ ๊ฒƒ์ธ๊ฐ€๋Š” ํ•„๋“œ ๋ชฉ๋ก์˜ ์ง‘๊ณ„ ํ•จ์ˆ˜์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง

๐Ÿ‹ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ง‘๊ณ„ํ•จ์ˆ˜๋ฅผ ๋™์‹œ์— ์‚ฌ์šฉ ๊ฐ€๋Šฅ

SELECT '์˜์—…๋ถ€', AVG(salary) FROM tStaff WHERE depart='์˜์—…๋ถ€';
SELECT '์ด๋ฌด๋ถ€', AVG(salary) FROM tStaff WHERE depart='์ด๋ฌด๋ถ€';
SELECT '์ธ์‚ฌ๊ณผ', AVG(salary) FROM tStaff WHERE depart='์ธ์‚ฌ๊ณผ';
 

๐Ÿ“Œ  ๋ถ€์„œ๋ณ„ ์›”๊ธ‰ ํ‰๊ท ์„ ์•Œ๊ณ  ์‹ถ์–ด ๋ถ€์„œ๋งˆ๋‹ค AVG ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๊ฒŒ ๋˜๋ฉด ๋ถ€์„œ ๋ชฉ๋ก์„ ๋งŒ๋“ค๊ณ  ๊ฐ ๋ถ€์„œ๋งˆ๋‹ค ๋ช…๋ น์„ ์ผ์ผ์ด ์‹คํ–‰ํ•ด์•ผ ํ•˜๊ณ  ๊ฒฐ๊ณผ๋„ ๋”ฐ๋กœ ์ถœ๋ ฅ๋˜์–ด ๋ณด๊ธฐ๋„ ๋ถˆํŽธํ•˜๋‹ค. ๋˜ํ•œ, ์ง‘๊ณ„ํ•จ์ˆ˜์™€ ์ผ๋ฐ˜ํ•„๋“œ๋ฅผ ๊ฐ™์ด ์ ์„ ์ˆ˜ ์—†์–ด ํ•„๋“œ ๋ชฉ๋ก์— ๋ถ€์„œ๋ช…์„ ํ•œ ๋ฒˆ ๋” ์ ์–ด์•ผ ํ•œ๋‹ค.

 

๐Ÿ’ก ์ด ๊ฒฝ์šฐ์— ํ•„์š”ํ•œ ๊ตฌ๋ฌธ์ด GROUP BY. ๊ธฐ์ค€ ํ•„๋“œ๋Š” ์ง‘๊ณ„ ํ•จ์ˆ˜์™€ ๊ฐ™์ด ์“ธ ์ˆ˜ ์žˆ์–ด์„œ ๋ชฉ๋ก๋„ ๋ณด๊ธฐ ์ข‹๊ฒŒ ์ถœ๋ ฅ ํ•  ์ˆ˜ ์žˆ์Œ.

 

 

๐Ÿ“Œ  ๋ถ€์„œ๋ณ„ ์›”๊ธ‰ ํ‰๊ท ์„ ๊ตฌํ•˜๋ ค๋ฉด depart ํ•„๋“œ ๊ธฐ์ค€์œผ๋กœ ๊ทธ๋ฃนํ•‘

    1)  ๊ธฐ์ค€ ํ•„๋“œ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜์—ฌ ๊ฐ™์€ ๊ทธ๋ฃน๋ผ๋ฆฌ ๊ตฌ๋ถ„

    2)  ํ†ต๊ณ„ ๋Œ€์ƒ ํ•„๋“œ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ์ฝ์–ด ์ง‘๊ณ„๋ฅผ ๊ตฌํ•จ

SELECT depart, AVG(salary) FROM tStaff GROUP BY depart;
SELECT grade, AVG(salary) FROM tStaff GROUP BY grade;
SELECT depart, COUNT(*), MAX(joindate), AVG(score) FROM tStaff GROUP BY depart;
 

 

 

 

2. ๊ธฐ์ค€ ํ•„๋“œ

 

๐Ÿ‹ GROUP BY์˜ ๊ธฐ์ค€ ํ•„๋“œ๋Š” ์ค‘๋ณต ๊ฐ’์ด ์žˆ์„ ๋•Œ๋งŒ ์˜๋ฏธ์žˆ๋‹ค.

     โžก๏ธ ๋ ˆ์ฝ”๋“œ๋ณ„๋กœ ๊ณ ์œ ํ•œ ๊ฐ’์„ ๊ฐ€์ง€๋Š” ํ•„๋“œ๋Š” ๊ทธ๋ฃนํ•‘ ๊ธฐ์ค€์œผ๋กœ ๋ถ€์ ํ•ฉ(์˜ˆ : ์•„์ด๋””)

     โžก๏ธ ํ•œ ๋ถ€์„œ์—์„œ ์—ฌ๋Ÿฌ ์ง์›์ด ์†Œ์†๋˜์–ด ์žˆ๊ณ  ๋ถ€์„œ๊ฐ€ ๊ฐ™์€ ์ง์›์ด ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— ๋ถ€์„œ๋ณ„ ์ง‘๊ณ„ ๊ฐ€๋Šฅ.

     โžก๏ธ ์„ฑ๋ณ„๋„ ์ค‘๋ณต๊ฐ’์ด์–ด์„œ ๊ทธ๋ฃนํ•‘ ํ•„๋“œ๋กœ ์ ํ•ฉ

SELECT gender, AVG(salary) FROM tStaff GROUP BY gender;
 

 

 

๐Ÿ“Œ  ๋‚จ๋…€ ์„ฑ๋ณ„๋กœ ํ‰๊ท  ์›”๊ธ‰์„ ๊ตฌํ•จ. ์„ฑ๋ณ„์€ ๋‚จ์ž, ์—ฌ์ž ๋‘ ๋ถ€๋ฅ˜์ด๋ฉฐ ๊ทธ๋ฃนํ•‘ํ•œ ๊ฒฐ๊ณผ๋„ 2๊ฐœ์˜ ๋ ˆ์ฝ”๋“œ๋กœ ์ถœ๋ ฅ

 

 

 


 

 

๐Ÿ”–  ์ค‘๋ณต ๊ฐ’์„ ๊ฐ€์ง€๋Š” ํ•„๋“œ๋งŒ ๊ทธ๋ฃนํ•‘์˜ ๊ธฐ์ค€์ด ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋ฉฐ ์ž„์˜์˜ ํ•„๋“œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๊ทธ๋ฃนํ•‘ ํ•  ์ˆ˜ ์žˆ๋‹ค.

SELECT name, SUM(salary) FROM tStaff GROUP BY name;
 

 

 

 

 

 

๐Ÿ“Œ ์ด๋ฆ„์„ ๊ธฐ์ค€์œผ๋กœ ๊ทธ๋ฃนํ•‘์„ ํ•˜๋Š” ๊ฒƒ๋„ ๋ฌธ๋ฒ•์ ์œผ๋กœ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์ „ ์ง์›์˜ ์›”๊ธ‰์ด ๊ฐ๊ฐ ์ถœ๋ ฅ์ด ๋˜์–ด ์˜๋ฏธ๊ฐ€ ์—†์Œ.

 

 

 

 

 

 

 


 

๐Ÿ”–  ๊ธฐ์ค€ ํ•„๋“œ๋ฅผ ์ฝค๋งˆ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ๋‘ ๊ฐœ ์ด์ƒ๋„ ์“ธ ์ˆ˜ ์žˆ๋‹ค.

      โžก๏ธ ์ด ๊ฒฝ์šฐ ์ฒซ ๋ฒˆ์งธ ๊ธฐ์ค€์œผ๋กœ ๊ทธ๋ฃน์„ ๋‚˜๋ˆ„๊ณ  ๊ทธ ๊ทธ๋ฃน ๋‚ด์—์„œ ๋‹ค์‹œ ๋‘ ๋ฒˆ์งธ ๊ธฐ์ค€์œผ๋กœ ๊ทธ๋ฃน์„ ๋‚˜๋ˆˆ๋‹ค.

๐Ÿ”–  ๊ธฐ์ค€ ํ•„๋“œ์˜ ์ˆœ์„œ๋Š” ๊ทธ๋ฃนํ•‘ ๊ณผ์ •์— ์˜ํ–ฅ์„ ์ฃผ์ง€๋งŒ ๊ฒฐ๊ณผ์—๋Š” ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๋Š”๋‹ค.

      โžก๏ธ ์ˆœ์„œ๋Š” ORDER BY๋กœ ์กฐ์ • ๊ฐ€๋Šฅ

SELECT depart, gender, COUNT(*) FROM tStaff GROUP BY depart, gender;
SELECT gender, depart, COUNT(*) FROM tStaff GROUP BY gender, depart;
SELECT depart, gender, COUNT(*) FROM tStaff GROUP BY depart, gender ORDER BY gender, depart;
 

 

๐Ÿ“Œ ๋ถ€์„œ๋ณ„, ์„ฑ๋ณ„๋กœ ๊ทธ๋ฃนํ•‘ํ•˜์—ฌ ์ง์›์ˆ˜ ๊ตฌํ•จ.  ์ด๋ฌด๋ถ€๋Š” ์—ฌ์ง์›์ด ์—†์–ด์„œ 5๊ฐœ์˜ ๊ทธ๋ฃน๋งŒ ๋‚˜์˜ด.

 

 

 

3.  GROUP BY์˜ ํ•„๋“œ ๋ชฉ๋ก

 

โšก๏ธ  <๊ทธ๋ฃนํ•‘ ์ฟผ๋ฆฌ์˜ ๊ธฐ๋ณธ ํ˜•์‹>

SELECT ๊ธฐ์ค€ํ•„๋“œ, ์ง‘๊ณ„ํ•จ์ˆ˜() FROM ํ…Œ์ด๋ธ” GROUP BY ๊ธฐ์ค€ํ•„๋“œ;
 

๐Ÿ‹ GROUP BY ์ ˆ์ด ์žˆ์œผ๋ฉด ํ•„๋“œ ๋ชฉ๋ก์—๋Š” ๊ธฐ์ค€ ํ•„๋“œ๋‚˜ ์ง‘๊ณ„ ํ•จ์ˆ˜๋งŒ ์™€์•ผ ํ•œ๋‹ค.

๐Ÿ‹ ํ•„๋“œ ๋ชฉ๋ก์˜ ์ œ์ผ ์ฒ˜์Œ์—๋Š” ํ†ต์ƒ ๊ธฐ์ค€ ํ•„๋“œ๋ฅผ ์ถœ๋ ฅํ•˜์—ฌ ์–ด๋–ค ๊ทธ๋ฃน์— ๋Œ€ํ•œ ํ†ต๊ณ„์ธ์ง€ ํ‘œ์‹œ

      โžก๏ธ ๊ธฐ์ค€ ํ•„๋“œ๋ฅผ ๋นผ๊ณ  ์ง‘๊ณ„ ํ•จ์ˆ˜๋งŒ์œผ๋กœ ์ฟผ๋ฆฌ๋ฅผ ๊ตฌ์„ฑํ•˜๋ฉด, ๊ณ„์‚ฐ์€ ๋˜‘๋ฐ”๋กœ ๋์ง€๋งŒ ๊ฐ ํ–‰์ด ์–ด๋–ค ๋ถ€์„œ์— ๋Œ€ํ•œ ํ†ต๊ณ„์น˜์ธ์ง€ ์•Œ์•„ ๋ณผ ์ˆ˜ ์—†๋‹ค.

 

SELECT depart, salary FROM tStaff GROUP BY depart;
SELECT SUM (salary) FROM tStaff GROUP BY depart;
 

 

 

 

๐Ÿ‹  ์ง‘๊ณ„ ํ•จ์ˆ˜๋Š” ๋‹ค์ค‘ ๊ฐ’์ด ์žˆ์–ด์•ผ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ทธ๋ฃนํ•‘์„ ํ•  ๋•Œ๋งŒ ์œ ์šฉ

       โžก๏ธ GROUP BY ์ ˆ ์—†์ด ์ผ๋ฐ˜ ํ•„๋“œ์™€ ์ง‘๊ณ„ ํ•จ์ˆ˜๋ฅผ ๊ฐ™์ด ์ถœ๋ ฅํ•˜๋ฉด ์˜๋ฏธ๊ฐ€ ์—†๋‹ค

SELECT depart, SUM(salary) FROM tStaff;
 

  ๐Ÿ“Œ  ๋ ˆ์ฝ”๋“œ๋ณ„๋กœ ๊ณ ์œ ํ•œ ๋ถ€์„œ๋ช…๊ณผ ํ†ต๊ณ„์— ์˜ํ•ด ๊ณ„์‚ฐํ•˜๋Š” ์›”๊ธ‰ ์ดํ•ฉ์€ ๊ฐ™์ด ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ’์ด ์•„๋‹ˆ๋ผ์„œ

        ์ด ๋ช…๋ น์€ ๋‹ค์Œ ๋‘˜ ์ค‘์— ํ•˜๋‚˜๋กœ ์ˆ˜์ •ํ•˜๋Š”๊ฒŒ ์ ๋‹น.

 ๐Ÿ“Œ  ๋’ค์— GROUP BY ์ ˆ์„ ๋ถ™์—ฌ ๋ถ€์„œ๋ณ„๋กœ ๊ทธ๋ฃนํ•‘ํ•˜๋ฉด ๊ธฐ์ค€ ํ•„๋“œ์ธ ๋ถ€์„œ๋ช…๋„ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๊ณ 

       ๋ถ€์„œ์˜ ์›”๊ธ‰ ์ดํ•ฉ์„ ๊ตฌํ•˜๋Š” SUM ํ•จ์ˆ˜๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

SELECT depart, SUM(salary) FROM tStaff GROUP BY depart;
SELECT SUM(salary) FROM tStaff;
 

 

 

 

4. HAVING

 

// ์œ„์น˜ ์ˆœ์„œ
SELECT ... FROM ... WHERE ... GROUP BY ... HAVING ... ORDER BY
 

๐Ÿ‹ HAVING์€ GROUP BY ๋‹ค์Œ์— ์˜ค๋ฉฐ ํ†ต๊ณ„ ๊ฒฐ๊ณผ ์ค‘ ์ถœ๋ ฅํ•  ๊ทธ๋ฃน์˜ ์กฐ๊ฑด์„ ์ง€์ • (์ฆ‰ HAVING์€ GROUP BY ๋ฌธ์˜ ์กฐ๊ฑด์ ˆ)

 

  ๐Ÿ“Œ  ๋ถ€์„œ๋ณ„ ํ‰๊ท  ์›”๊ธ‰์„ ์ถœ๋ ฅํ•˜๋Š” ๋ช…๋ น์€ ๋ณ„๋‹ค๋ฅธ ์กฐ๊ฑด์ด ์—†์œผ๋ฉด ๋ชจ๋“  ๋ถ€์„œ์˜ ํ‰๊ท  ์›”๊ธ‰์„ ์ถœ๋ ฅ.

        ํ‰๊ท  ์›”๊ธ‰์ด 340์„ ๋„˜๋Š” ๋ถ€์„œ๋งŒ ์ถœ๋ ฅํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด GROUP BY ๋‹ค์Œ์— HAVIING ์ ˆ์„ ์ถ”๊ฐ€.

SELECT depart, AVG(salary) FROM tStaff GROUP BY depart HAVING AVG(salary) >= 340;
 

 

๐Ÿ“Œ  ๊ทธ๋ฃน๋ณ„ ํ†ต๊ณ„๋ฅผ ๋ฝ‘๊ณ  ๊ทธ ๊ฒฐ๊ณผ์…‹์—์„œ HAVING ์กฐ๊ฑด์— ๋งž๋Š” ๋ ˆ์ฝ”๋“œ๋งŒ ์ถœ๋ ฅ.

      ํ‰๊ท  ์›”๊ธ‰์ด 327์ธ ์ธ์‚ฌ๊ณผ๋Š” ์ œ์™ธ.

 

 

 


 

 

๐Ÿ‹ ์ถœ๋ ฅ ์ˆœ์„œ๋ฅผ ์ง€์ •ํ•  ๋•Œ๋Š” ORDER BY ์ ˆ์„ ๋’ค์— ๋ถ™์ธ๋‹ค.

๐Ÿ‹ GROUP BY ๋‹ค์Œ์— HAVING์ด ์˜ค๊ณ  ORDER BY๋Š” ํ•ญ์ƒ ์ œ์ผ ๋งˆ์ง€๋ง‰์— ์œ„์น˜ํ•œ๋‹ค.

SELECT depart, AVG(salary) FROM tStaff 
  GROUP BY depart HAVING AVG(salary) >= 340 
    ORDER BY AVG(salary) DESC;
 

 


 

 

๐Ÿ‹ WHERE ์™€ HAVING์€ ์ ์šฉ ์‹œ์ ๊ณผ ์ œํ•œ ๋Œ€์ƒ์ด ๋‹ค๋ฅด๋‹ค.

๐Ÿ‹ WHERE ์ ˆ์€ GROUP BY ์•ž์— ๋‚˜ํƒ€๋‚˜๋ฉฐ ํ†ต๊ณ„ ๋Œ€์ƒ ๋ ˆ์ฝ”๋“œ์˜ ์กฐ๊ฑด์„ ์ œํ•œํ•œ๋‹ค.

SELECT depart, AVG(salary) FROM tStaff WHERE salary > 300 GROUP BY depart;
 

 

 

๐Ÿ“Œ  ์›”๊ธ‰ 300 ์ดˆ๊ณผ ์กฐ๊ฑด์— ์˜ํ•ด ์›”๊ธ‰ 300 ์ดํ•˜์˜ ์ง์›์€ ํ‰๊ท ์—์„œ ์•„์˜ˆ ์ œ์™ธ๋˜์–ด ํ‰๊ท ๊ฐ’์ด ๋” ๋†’๊ฒŒ ๋‚˜ํƒ€๋‚จ. ๋งŒ์•ฝ ๋ชจ๋“  ์ง์›์˜ ์›”๊ธ‰์ด 300 ์ดํ•˜์ด๋ฉด ์ด ๋ถ€์„œ๋Š” ์•„์˜ˆ ๊ฒฐ๊ณผ์…‹์— ๋‚˜ํƒ€๋‚˜์ง€๊ณ  ์•Š์Œ.

 

 

 

 

๐Ÿ‹ HAVING ์ ˆ์€ GROUP BY ๋‹ค์Œ์— ๋‚˜ํƒ€๋‚˜๋ฉฐ ์ง‘๊ณ„ํ•œ ๊ฒฐ๊ณผ์…‹์˜ ์กฐ๊ฑด์„ ์ œํ•œํ•œ๋‹ค.

SELECT depart, AVG(salary) FROM tStaff WHERE salary > 300 GROUP BY depart 
HAVING AVG(salary) >= 360 ORDER BY depart;
 

 

 

๐Ÿ“Œ ์›”๊ธ‰์ด 300 ์ดˆ๊ณผ์ธ ์ง์›๋“ค์„ ๋Œ€์ƒ์œผ๋กœ ๋ถ€์„œ๋ณ„ ํ‰๊ท  ์›”๊ธ‰์„ ๊ตฌํ•˜๊ณ  ๊ทธ ๊ฒฐ๊ณผ ํ‰๊ท  ์›”๊ธ‰์ด 360 ์ด์ƒ์ธ ๋ถ€์„œ๋งŒ ๊ณ ๋ฅธ ํ›„ ๋ถ€์„œ๋ช…์œผ๋กœ ์ •๋ ฌ

 

 

โšก๏ธ ์ฒ˜๋ฆฌ์ˆœ์„œ

 

1. WHERE ์ ˆ์ด ์ง์›๋ชฉ๋ก์—์„œ ์›”๊ธ‰ 300์ดํ•˜์˜ ์ง์›์„ ๋จผ์ € ์ œ๊ฑฐ

2. ๋ถ€์„œ๋ณ„๋กœ ๊ทธ๋ฃนํ•‘ํ•˜์—ฌ AVG ํ•จ์ˆ˜๋กœ ๋‚จ์€ ์ง์›์˜ ๋ถ€์„œ๋ณ„ ํ‰๊ท  ์›”๊ธ‰์„ ๊ณ„์‚ฐ

3. HAVING ์ ˆ์— ์˜ํ•ด ํ‰๊ท  ์›”๊ธ‰์ด ๋‚ฎ์€ ๋ถ€์„œ๋Š” ์ œ์™ธ

4. ๋‚จ์€ ๋ถ€์„œ๋ฅผ ORDER BY๊ฐ€ ์ •๋ ฌํ•˜์—ฌ ์ถœ๋ ฅ

 

 

 

SELECT depart, MAX(salary) FROM tStaff WHERE depart IN ('์ธ์‚ฌ๊ณผ', '์˜์—…๋ถ€') GROUP BY depart;
SELECT depart, MAX(salary) FROM tStaff GROUP BY depart HAVING depart IN ('์ธ์‚ฌ๊ณผ', '์˜์—…๋ถ€');
 

 

 

๐Ÿ“Œ ๋‘ ์ฟผ๋ฆฌ ๋ชจ๋‘ ์ธ์‚ฌ๊ณผ์™€ ์˜์—…๋ถ€์˜ ์ตœ๋Œ€ ์›”๊ธ‰์„ ์กฐ์‚ฌ.

๐Ÿ“Œ ์กฐ๊ฑด์„ ์ ์šฉํ•˜๋Š” ์‹œ์ ์€ ๋‹ค๋ฅด์ง€๋งŒ ์กฐ๊ฑด์˜ ๋‚ด์šฉ์€ ๊ฐ™์•„ ์ตœ์ข… ์‹คํ–‰ ๊ฒฐ๊ณผ๋Š” ๊ฐ™์Œ.

 

 

๐Ÿ’ก ๋‚ด๋ถ€์ ์ธ ์‹คํ–‰ ๊ณผ์ •์€ ์ฐจ์ด๊ฐ€ ์žˆ์Œ

    1. WHERE ์ ˆ์€ ์ง‘๊ณ„์ „์— ์ด๋ฌด๋ถ€๋ฅผ ์ œ์™ธํ•˜์—ฌ ๊ผญ ํ•„์š”ํ•œ ๊ณ„์‚ฐ๋งŒ ํ•จ.

    2. HAVING ์ ˆ์€ ๋ชจ๋“  ๋ถ€์„œ์˜ ์ง‘๊ณ„๋ฅผ ๋‹ค ๋๋‚ธ ํ›„ ์ด๋ฌด๋ถ€๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ์‹์ด๋ผ ์ถœ๋ ฅํ•˜์ง€๋„ ์•Š์„ ์ด๋ฌด๋ถ€์˜ ์ง‘๊ณ„๊นŒ์ง€ ๊ณ„์‚ฐํ•˜์—ฌ ๋น„ํšจ์œจ์ 

 

 

 

 

 

 

[ ๋‚ด์šฉ ์ฐธ๊ณ  ; IT ํ•™์› ๊ฐ•์˜ ]

 

 

+ Recent posts