04_group by
use mydb
select * from tb_test
문)나이가 제일 많은 사람?
select top 1 uname,uage
from tb_test
order by uage desc
문)이름 '해바라기' 가 몇살인데?
select uname,uage
from tb_test
where uname='해바라기'
select * from tb_test order by uage
서브쿼리
문)나이가 제일 적은 사람들 출력하시오
1.제일 적은 나이를 찾은 후
select min(uage) from tb_test
2.1번결과값 동일한 나이를 찾는다.
select *
from tb_test
where uage=(select min(uage) from tb_test)
문)평균나이보다 많은 사람 출력하시오
select *
from tb_test
where uage>=(select avg(uage) from tb_test)
select 칼럼명 --출력
from 테이블명
where 조건절
order by 칼럼명--정렬
group by 칼럼명--그룹화(기본적으로 order by를 갖고 있음)
having 조건절
ex)where은 group by전에 조건을 고려하고
having은 group by후 즉, 그룹핑 시킨값을 가지고
조건을 고려한다.
select distinct(uaddress) from tb_test --중복제거
select uaddress from tb_test
order by uaddress
select * from tb_test order by uaddress
select uaddress,avg(uage)
from tb_test
group by uaddress
문)각 지역별 인원수를 출력하시오
select uaddress,count(*) as [갯수]
from tb_test
group by uaddress
문)인원수가 제일 많은 지역명과, 인원수 출력
select top 1 uaddress,count(*) as[갯수]
from tb_test
group by uaddress
order by count(*) desc
1.from
2.group by
3.select
4.order by
5.top
문)각 지역별로 수당이 제일 많은 금액,지역을 금액순으로 출력
select uaddress,max(umoney)
from tb_test
group by uaddress
order by max(umoney)
문)서울지역을 제외하고, 지역별로 평균금액 높은순으로
지역명과 지역평균금액을 출력
select uaddress,avg(umoney)
from tb_test
where uaddress != '서울'
group by uaddress
order by avg(umoney) desc
1.from
2.where
3.group by
4.order by
5.select
문)지역별로 나이평균 25이상인 지역명과 나이평균값 출력
나이평균값이 높은 top 3를 조회하시오
select top 3 uaddress,avg(uage)
from tb_test
group by uaddress
having avg(uage)>=25
order by avg(uage) desc
1.from
2.group by
3.having
4.order by
5.select
6.top