2016년 10월 24일 월요일
2016년 10월 22일 토요일
2016년 10월 21일 금요일
2016년 10월 20일 목요일
2016년 10월 19일 수요일
2016년 10월 18일 화요일
2016년 10월 17일 월요일
2016년 10월 16일 일요일
2016년 10월 14일 금요일
2016년 10월 13일 목요일
2016년 10월 12일 수요일
2016년 10월 11일 화요일
2016년 10월 10일 월요일
2016년 10월 7일 금요일
2016년 10월 6일 목요일
52day / DB / Subquery
www.c-sharpcorner.com |
Subquery
: Praent Query에 종속되어있는 Inner Query
- 게시판을 만들다가 Subquery를 배워야하는 이유?
게시판에 글 목록을 보통 10개씩 지정해 놓는다.
만약 그러지 못할 경우?? Subquery를 쓰지 못할 경우??
DB에 게시판의 글이 100개 1000개 10000개가 있을 경우에
비주얼적으로 수많은 글을 한 페이지에 담을 사람은 없을 것이다.
하지만 편법을 쓴다면 일단 DB에서 모든 게시글을 가져온 다음에
Controll이나 View에서 원하는 만큼만 보여줄 수 있다.
이렇게 한다면 당연히 DB에 좋지 않을 것이며 굉장히 무거운 웹사이트가 될 것이 분명하다.
그래서 Subquery로 어떻게?
View -> 원하는 만큼만!! 요청하도록 한다.
Controll -> 원하는 만큼만 전달하도록 한다.
DB -> 당연히 요청한 부분만 조회해온다.
budget 의 최고액을 조회
SELECT max(amount) FROM budget;
가장 높은 액수(amount)로 지출된 내역(contents)은?
SELECT contents FROM budget WHERE amount = 25000;
subquery를 이용해서 조회한다
평균액수(amount)보다 많은 금액과 내역을 조회
SELECT avg(amount) FROM budget;
SELECT amount,contents FROM budget WHERE amount>17600;
위 두 sql을 Subquery를 이용해 한번에 정의 ( 내림차순 정렬 )
SELECT amount,contents FROM budget
WHERE amount > (SELECT avg(amount) FROM budget)
ORDER BY amount DESC;
연습) 전체 내역의 평균액수보다 낮은 내역 중 가장 높은 액수의 내역은?
SELECT contents,amount FROM budget ORDER BY amount DESC;
1) 평균금액 조회
SELECT AVG(amount) FROM budget; -- 17600
2) 평균금액보다 작은 내역의 최고액을 조회
SELECT MAX(amount) FROM budget
WHERE amount < 17600; -- 15000
그 금액에 해당하는 내역을 조회
SELECT contents FROM budget
WHERE amount = 15000;
위 sql을 Subquery를 이용해 한번에 정의
SELECT contents FROM budget
WHERE amount = (
SELECT MAX(amount) FROM budget
WHERE amount < (
SELECT AVG(amount) FROM budget
)
)
| cs |