댄스댄스 2008. 6. 18. 15:32

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