가격이 기재되어 있지 않은 title 필드(컬럼)의 개수를 출력하십시오.
select count(title) from titles
where price is null; //가격이 기재되어 있지 않은 null로 표시되있다는뜻!!
문제8) 난이도(중) (내장함수)
위의 문제에서 “is” 대신 “=”연산자를 사용할 수 있도록 하려면 조치할 때의 명령문과 쿼리를 적어봅시다.
set ansi_nulls off;
select count(title) from titles
where price = null;
문제9) 난이도(중) (select)
다음 중 나머지와 결과가 다른 것은 무엇일까요?
1) select price from pubs...titles;
2) select price from titles;
3) select price from dbo.titles;
4) select price from pubs.dbo.titles;
1)의 경우는 에러가 납니다. 제대로 실행하려면 select price from pubs..titles; 같이 기입해야 합니다.
문제10) 난이도(평이) (isnull)
가격이 기재되어 있지 않은 항목을 ‘0’으로 채워서 price 컬럼 자리에 화면 출력합니다.
select price= isnull(price, 0) from titles;
문제11) 난이도(평이) (isnull)
ANSI 경고를 표현하지 않도록 셋팅하는 명령을 기입하십시오.
set ANSI_warnings off
###### 다음 문제 부터는 sales 테이블이 기정의 테이블이 됩니다 ######
문제12) 난이도(중) (연산자, 내장함수)
Sales 테이블에서
select count(*) from sales
where ord_date between
select count(*) from sales
where ord_date >= '
select count(*) from sales
where ord_date between '
두가지 경우를 사용할 수 있습니다.
물론 이렇게 날짜 형식을 적어도 좋습니다.
select count(*) from sales
where ord_date between '
select count(*) from sales
where ord_date >= '
문제13) 난이도(중) (group by, 연산함수)
1994년 1년간의 도서판매량이 30권 이상인 것만을 각 ID 별로 조회하고자 합니다. 화면에는 “title_id”, “1994년 판매량”이라는 두가지의 필드로 출력될 수 있도록 조치합니다.
select title_id, sum(qty) as '1994년 판매량'
from sales
where ord_date between '
group by title_id -- group by all title_id
having sum(qty) >=30;
물론 여기서 날짜를 기입하는 방법은 “/” 대신에 “-“를 기입할 수 있으면 between 대신에 비교 연산자를 사용하실 수 있습니다.
문제14) 난이도(평이) (compute)
Sales 테이블에서 가게 ID, 판매량, 평균을 보고자 합니다. 이것을 가게 ID 각각 결과를 내림차순으로 볼 수 있도록 조치합니다.
select stor_id, qty
from sales
order by stor_id desc
compute avg(qty) by stor_id;
문제15) 난이도(중) (compute)
가게ID, 가게별 판매량을 인쇄하고 화면 마지막에 전체 평균 판매량을 보고자 합니다.
해당 쿼리를 기입합니다.
select stor_id, qty
from sales
compute avg(qty)
마지막에 전체 판매량을 볼 수 있는 것은 compute 를 이용하도록 합니다.
문제16) 난이도(고) (group by, 연산함수)
1993년 상반기 도서 판매량 20권 이상에 한해서 평균을 구하되 각 title ID 별로 평균을 내림차순으로 출력하되, title_id, “1993년 상반기 평균 판매량” 두 항목으로 출력할 수 있도록 조치합니다.
select title_id, avg(qty) as '1993년 상반기 평균 판매량'
from sales
where ord_date between '
group by title_id
having sum(qty) >=20
order by avg(qty) desc;