๋ฏธ๋ ํ๋ก์ ํธ : ์ฌํ ์ด๋ ์์ ์ ์ ์ง ๊ตฌํ๊ธฐ (1)
๋ฏธ๋ ํ๋ก์ ํธ : ์ฌํ ์ด๋ ์์ ์ ์ ์ง ๊ตฌํ๊ธฐ๋ถ์ ๋ชฉ์ : ์์ธ์ ์๊ฒฝํ ์ฌํ ์ด๋ ์์ด ์ด ์ ์๋ ๊ฐ์ฅ ํฉ๋ฆฌ์ ์ธ ์ ์ ์ง์ ์ฐพ๋ ๊ฒ.๋ฐ์ดํฐ ์์ง : ์์ธ์ ์ด๋ฆฐ ๋ฐ์ดํฐ ๊ด์ฅRent : ์์ธํน๋ณ์ ์
archivenyc.tistory.com
๐พ ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ
1. ์์ธํน๋ณ์ ์ ์์ธ๊ฐ ์ ๋ณด (2022)
์ปฌ๋ผ๋ช | ๋ฐ์ดํฐ ํ์ | ์กฐ๊ฑด |
์ ์์ฐ๋ | int | |
์์น๊ตฌ ์ฝ๋ | int | |
์์น๊ตฌ๋ช | varchar(50) | |
๋ฒ์ ๋ ์ฝ๋ | int | |
๋ฒ์ ๋๋ช | varchar(50) | |
์ธต | int | 3์ธต ์ด์ |
์ ์์ธ ๊ตฌ๋ถ | varchar(50) | ์ ์ธ |
์๋๋ฉด์ (m2) | int | 24m2 ์ด์ |
๋ณด์ฆ๊ธ (๋ง์) | int | 2์ต |
๊ฑด์ถ๋ ๋ | int | ์ค๊ณต ์๋ฃ์ผ๋ก๋ถํฐ 10๋ ๋ฏธ๋ง |
๊ฑด๋ฌผ์ฉ๋ | varchar(50) | ์คํผ์คํ , ์ํํธ |
SELECT ์ ์๋
๋, ๊ฑด๋ฌผ๋ช
, ์์น๊ตฌ๋ช
, ๋ฒ์ ๋๋ช
,
if(๋ถ๋ฒ=0,๋ณธ๋ฒ,CONCAT(๋ณธ๋ฒ,"-",๋ถ๋ฒ)) ๋ฒ์ง์, ์ธต,
DATE_FORMAT(๊ณ์ฝ์ผ, '%Y-%m-%d') ๊ณ์ฝ์ผ,
์๋๋ฉด์ , `๋ณด์ฆ๊ธ(๋ง์)`,
๊ฑด์ถ๋
๋, ๊ฑด๋ฌผ์ฉ๋, ๊ณ์ฝ๊ธฐ๊ฐ, ์ ๊ท๊ณ์ฝ๊ตฌ๋ถ, ๊ฐฑ์ ์ฒญ๊ตฌ๊ถ์ฌ์ฉ, ์ข
์ ๋ณด์ฆ๊ธ, ์ข
์ ์๋๋ฃ,
COUNT(*)
FROM Rent_2022
WHERE ์ ์์ธ๊ตฌ๋ถ = "์ ์ธ"
AND ์ธต >=3
AND ๊ฑด๋ฌผ์ฉ๋ in ("์คํผ์คํ
","์ํํธ")
AND ์๋๋ฉด์ >= 24
AND `๋ณด์ฆ๊ธ(๋ง์)` >= 20000
AND (์ ์๋
๋ - ๊ฑด์ถ๋
๋) < 10
GROUP BY 3,4
- column ๋ณ๋
- ๋ฒ์ง์ column ์์ฑ : “๋ณธ๋ฒ - ๋ถ๋ฒ” ํํ๋ก ๋ฒ์ง์ ์นผ๋ผ ์์ฑ
- ๊ณ์ฝ์ผ date formate์ “yyyymmdd”์์ “yyyy-mm-dd”๋ก ๋ณ๊ฒฝ
- “๊ฑด๋ฌผ๋ช ”์ 2๋ฒ์งธ ์ปฌ๋ผ์ผ๋ก ์์ ๋ณ๊ฒฝ (→ ๊ฐ๋ ์ฑ์ ์ํจ)
- ์กฐ๊ฑด
- ์ ์์ธ ๊ตฌ๋ถ = “์ ์ธ” : ์ ์ธ ๋งค๋ฌผ๋ง ์ถ๋ ฅ
- ๊ฑด๋ฌผ์ฉ๋ in (”์คํผ์คํ ”, “์ํํธ”) : ์ํํธ ๋๋ ์คํผ์คํ ๋งค๋ฌผ๋ง ์ถ๋ ฅ
2. ์์ธ์ ์๊ถ๋ถ์
select ์์น๊ตฌ๋ช
,
max(if(service='์คํฌ์ธ ๊ฐ์ต', sum_s, 0)) '์คํฌ์ธ ๊ฐ์ต',
max(if(service='์คํฌ์ธ ํด๋ฝ', sum_s, 0)) '์คํฌ์ธ ํด๋ฝ',
max(if(service='๋๋ฌผ๋ณ์', sum_s, 0)) '๋๋ฌผ๋ณ์'
from
(
select ์์น๊ตฌ๋ช
, ์๋น์ค_์
์ข
_์ฝ๋_๋ช
service, sum(์ ํฌ_์) sum_s
from shop
where ์์น๊ตฌ๋ช
in ('๋๋๋ฌธ๊ตฌ', '๊ด์ง๊ตฌ', '์กํ๊ตฌ', '์์ด๊ตฌ', '์ฉ์ฐ๊ตฌ', '์ค๊ตฌ', '์ฑ๋๊ตฌ', '๊ฐ๋จ๊ตฌ', '๊ด์
๊ตฌ')
and ์๋น์ค_์
์ข
_์ฝ๋_๋ช
in ('์คํฌ์ธ ๊ฐ์ต', '์คํฌ์ธ ํด๋ฝ', '๋๋ฌผ๋ณ์')
and ๊ธฐ์ค_๋
๋ถ๊ธฐ_์ฝ๋ = 20221
group by 1, 2
) t
group by 1
order by 1;
3. ์์ธ์ ์ฃผ์ ๊ณต์ ํํฉ
SELECT ์ง์ญ, COUNT(*) ๊ณต์
FROM (SELECT ๊ณต์๋ช
, ์ง์ญ
FROM Park
WHERE ๊ณต์์ฃผ์ like '%์์ธ%')a
GROUP BY 1
ORDER BY 2 DESC
4. ํตํฉ ๋ฐ์ดํฐ
SELECT ์์น๊ตฌ๋ช
, `ํ๊ท ์ ์ธ๊ธ(๋ง์)`, ๋๋ฌผ๋ณ์, ์คํฌ์ธ ํด๋ฝ, ์คํฌ์ธ ๊ฐ์ต, ๊ณต์, ๋งค๋ฌผ์
FROM (SELECT ์์น๊ตฌ๋ช
, COUNT(*) ๋งค๋ฌผ์, ROUND(AVG(`๋ณด์ฆ๊ธ(๋ง์)`),0) "ํ๊ท ์ ์ธ๊ธ(๋ง์)"
FROM (SELECT * FROM Rent_2022
WHERE ์ ์์ธ๊ตฌ๋ถ = "์ ์ธ"
AND ์์น๊ตฌ๋ช
in ('๋๋๋ฌธ๊ตฌ', '๊ด์ง๊ตฌ', '์กํ๊ตฌ', '์์ด๊ตฌ', '์ฉ์ฐ๊ตฌ', '์ค๊ตฌ', '์ฑ๋๊ตฌ', '๊ฐ๋จ๊ตฌ', '๊ด์
๊ตฌ')
AND ์ธต >=3
AND ๊ฑด๋ฌผ์ฉ๋ in ("์คํผ์คํ
","์ํํธ")
AND ์๋๋ฉด์ >= 24
AND `๋ณด์ฆ๊ธ(๋ง์)` <= 20000
AND (์ ์๋
๋ - ๊ฑด์ถ๋
๋) < 10) r
GROUP BY 1 ) a
INNER JOIN (SELECT ์๊ตฐ๊ตฌ๋ช
,
max(if(์
์ข
= "๋๋ฌผ๋ณ์", ์ ํฌ์, NULL)) "๋๋ฌผ๋ณ์",
max(if(์
์ข
= "์คํฌ์ธ ํด๋ฝ", ์ ํฌ์, NULL)) "์คํฌ์ธ ํด๋ฝ",
max(if(์
์ข
= "์คํฌ์ธ ๊ฐ์ต", ์ ํฌ์, NULL)) "์คํฌ์ธ ๊ฐ์ต"
FROM (SELECT ์๊ตฐ๊ตฌ๋ช
, ์๋น์ค_์
์ข
_์ฝ๋_๋ช
์
์ข
, sum(์ ํฌ_์) ์ ํฌ์
FROM shop s INNER JOIN addr a ON s.ํ์ ๋_์ฝ๋*100 =a.ํ์ ๋์ฝ๋
WHERE ๊ธฐ์ค_๋
๋ถ๊ธฐ_์ฝ๋ = 20221 and (์๋น์ค_์
์ข
_์ฝ๋_๋ช
= "๋๋ฌผ๋ณ์" or ์๋น์ค_์
์ข
_์ฝ๋_๋ช
like '%์คํฌ์ธ %')
and ์๊ตฐ๊ตฌ๋ช
in ('๋๋๋ฌธ๊ตฌ', '๊ด์ง๊ตฌ', '์กํ๊ตฌ', '์์ด๊ตฌ', '์ฉ์ฐ๊ตฌ', '์ค๊ตฌ', '์ฑ๋๊ตฌ', '๊ฐ๋จ๊ตฌ', '๊ด์
๊ตฌ')
GROUP BY 1,2)t
WHERE ์๊ตฐ๊ตฌ๋ช
in ('๋๋๋ฌธ๊ตฌ', '๊ด์ง๊ตฌ', '์กํ๊ตฌ', '์์ด๊ตฌ', '์ฉ์ฐ๊ตฌ', '์ค๊ตฌ', '์ฑ๋๊ตฌ', '๊ฐ๋จ๊ตฌ', '๊ด์
๊ตฌ')
GROUP BY 1) b
INNER JOIN (SELECT ์ง์ญ, COUNT(*) ๊ณต์
FROM (SELECT ๊ณต์๋ช
, ์ง์ญ FROM Park WHERE ๊ณต์์ฃผ์ like '%์์ธ%'
AND ์ง์ญ in ('๋๋๋ฌธ๊ตฌ', '๊ด์ง๊ตฌ', '์กํ๊ตฌ', '์์ด๊ตฌ', '์ฉ์ฐ๊ตฌ', '์ค๊ตฌ', '์ฑ๋๊ตฌ', '๊ฐ๋จ๊ตฌ', '๊ด์
๊ตฌ'))a
GROUP BY 1) c
WHERE a.์์น๊ตฌ๋ช
= b.์๊ตฐ๊ตฌ๋ช
and b.์๊ตฐ๊ตฌ๋ช
= c.์ง์ญ
ORDER BY 7 DESC