Development Study/Backend

[SQL] 일주일 뒤에 풀어보는 SQL ( SELECT함수 ~ 집계 함수 )

  • -
728x90

SQL문 특성 상 자주 하지 않으면 잊어버리기에 이번엔 얼마나 기억하고 있을 지

복습해보는 시간을 가져보도록 하겠다

여러분들은 분명 다시 풀어봐도 잘 풀 수 있을 것이다

 

아래에는 SQL의 시작점인 글이다

 

[SQL] 저장된 데이터를 원하는 대로 찾아보자 ( SELECT ~ 집계 함수 )

들어가기에 앞서 SQL문은 기본적인 문법, 실습 위주의 학습을 통해 빠르게 익힐 수 있다 꾸준하고 반복적인 학습을 하면 실력이 빠르게, 좋은 방향으로 늘어날 것이라 생각한다 SQL문 관련 기능/

time-map-installer.tistory.com

일주일 전에 풀어보았던 문제

 

[SQL] 연습 문제 ( SELECT함수 ~ 집계 함수 )

이 포스팅은 이전 글과 연계되어있다. 혹시 보고오지 못했다면 먼저 읽고 문제를 풀어보는 것을 추천한다 이전 글 보고오기 [SQL] 저장된 데이터를 원하는 대로 찾아보자 ( SELECT ~ 집계 함수 ) 들

time-map-installer.tistory.com

 

접은 글을 펼치면 정답과 결과화면을 같이 나오도록 해 두었다

문제를 해결 한 이후 펼쳐보도록 하자


1. 도서번호가 5인 도서의 이름과, 출판사, 가격

더보기

SELECT bookname, publisher, price
FROM Book
WHERE bookid = 5;

Result From Prob1

 

 

2. 가격이 15,000원 이상인 도서정보

더보기

SELECT *
FROM Book
WHERE price >= 15000;

Result From Prob2

 

 

3.  가격이 15000원 이상 20000원 미만인 도서를 도서명 내림차순으로 출력

더보기

SELECT *
FROM Book
WHERE price >= 15000 and price < 20000
ORDER BY bookname DESC;

Result From Prob3 안나오는 것이 정상이다 조건에 만족하는 책은 없다

결과가 안 나온다고 당황하지 말자 사실 안 나오는 것이 정답이다

 

4. 보유하고 있는 도서의 총 개수

더보기

SELECT COUNT(bookid)
FROM Book;

Result From Prob4

도서의 총 개수이므로 도서의 고윳값인 bookId를 count 하였다

+ *을 쓰면 행의 수가 모두 count 된다

+ 사실 중복제거가 안 된 상태라 똑같은 듯하다

 

5. 거래하고 있는 출판사 수

더보기

SELECT COUNT(DISTINCT publisher)
FROM Book;

Result From Prob5

중복제거 DISTINCT를 사용하였다

 

 

6.  도서를 한번이라도 구매한 적 있는 고객 수

더보기

SELECT COUNT(DISTINCT custid)
FROM Orders;

Result From Prob6

custid는 구매한 고객 리스트이므로 중복없이 몇 명이 구매했는지 알아보는 코드를 작성한다

 

 

7. 성이 "Kim"인 고객 정보

더보기

SELECT *
FROM Customer
WHERE name LIKE "Kim%";

Result From Prob7

LIKE = "%%" <- 이러면 안된다

 

 

8. 성이 'Kim'이고 이름이 'a'로 끝나는 고객 정보

더보기

SELECT *
FROM Customer
WHERE name LIKE "Kim%a";

Result From Prob8

and를 굳이 사용 안해도 정리 가능

 

 

9. 휴대폰 번호가 null값이 들어가 있는 고객 정보

더보기

SELECT *
FROM Customer
WHERE phone IS NULL;

Result From Prob9

= NULL을 쓰는 오류를 범하지 않도록 하자

 

10. 고객번호가 2인 고객의 도서 총 구매액

더보기

SELECT SUM(saleprice)
FROM Orders
WHERE custId = 2;

Result From Prob10

+ 항목이름이 뭔지 기억안나는 것만 주의하자

 

 

번외. 1번 고객의 최초 구매일, 마지막 구매일

더보기

SELECT min(orderdate), max(orderdate)
FROM Orders
WHERE custId = 1;

날짜라고 해도 min과 max의 범주 안에 들어간다

 

번외2. 고객ID가 2인 고객이 구매한 책의 수를 세어보자

더보기

SELECT COUNT(*)
FROM Orders
WHERE custId = 2;

구매 횟수만 보는 것이기에 *을 사용하여 행의 개수만 세어주어도 충분하다

 

 


똑똑한 여러분들이라면 분명 모두 잊지 않고 잘 풀어냈을 것이라 믿는다

728x90
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.