본문 바로가기

SQL/MySQL

is null, between예제!!

가격이 기재되어 있지 않은 title 필드(컬럼)의 개수를 출력하십시오.

 

select count(title) from titles

where price is null; //가격이 기재되어 있지 않은 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 테이블에서 1994년 1월 1에서 1994년 12월 30까지 판매되었던 책의 총 개수를 구하도록 쿼리를 작성하십시오.

 

select count(*) from sales

where ord_date between '94.1.1' and '94.12.30';

 

select count(*)  from sales

where ord_date >= '1994-01-01' and ord_date<='1994-12-30';

 

select count(*) from sales

where ord_date between '1994-01-01' and '1994-12-30';

 

두가지 경우를 사용할 수 있습니다.

 

물론 이렇게 날짜 형식을 적어도 좋습니다.

 

select count(*)  from sales

where ord_date between '1994/01/01' and '1994/12/30';

 

select count(*)  from sales

where ord_date >= '1994/01/01' and ord_date<='1994/12/30';

 

 

문제13) 난이도() (group by, 연산함수)

 

1994 1년간의 도서판매량이 30권 이상인 것만을 각 ID 별로 조회하고자 합니다. 화면에는 title_id, 1994년 판매량이라는 두가지의 필드로 출력될 수 있도록 조치합니다.

 

select title_id, sum(qty) as '1994년 판매량'

from sales

where ord_date between '1994/01/01' and '1994/12/30'

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 '1993/01/01' and '1993/06/30'

group by title_id

having sum(qty) >=20

order by avg(qty) desc;