SQL문 특성 상 자주 하지 않으면 잊어버리기에 이번엔 얼마나 기억하고 있을 지
복습해보는 시간을 가져보도록 하겠다
여러분들은 분명 다시 풀어봐도 잘 풀 수 있을 것이다
아래에는 SQL의 시작점인 글이다
일주일 전에 풀어보았던 문제
접은 글을 펼치면 정답과 결과화면을 같이 나오도록 해 두었다
문제를 해결 한 이후 펼쳐보도록 하자
1. 도서번호가 5인 도서의 이름과, 출판사, 가격
SELECT bookname, publisher, price
FROM Book
WHERE bookid = 5;
2. 가격이 15,000원 이상인 도서정보
SELECT *
FROM Book
WHERE price >= 15000;
3. 가격이 15000원 이상 20000원 미만인 도서를 도서명 내림차순으로 출력
SELECT *
FROM Book
WHERE price >= 15000 and price < 20000
ORDER BY bookname DESC;
결과가 안 나온다고 당황하지 말자 사실 안 나오는 것이 정답이다
4. 보유하고 있는 도서의 총 개수
SELECT COUNT(bookid)
FROM Book;
도서의 총 개수이므로 도서의 고윳값인 bookId를 count 하였다
+ *을 쓰면 행의 수가 모두 count 된다
+ 사실 중복제거가 안 된 상태라 똑같은 듯하다
5. 거래하고 있는 출판사 수
SELECT COUNT(DISTINCT publisher)
FROM Book;
중복제거 DISTINCT를 사용하였다
6. 도서를 한번이라도 구매한 적 있는 고객 수
SELECT COUNT(DISTINCT custid)
FROM Orders;
custid는 구매한 고객 리스트이므로 중복없이 몇 명이 구매했는지 알아보는 코드를 작성한다
7. 성이 "Kim"인 고객 정보
SELECT *
FROM Customer
WHERE name LIKE "Kim%";
LIKE = "%%" <- 이러면 안된다
8. 성이 'Kim'이고 이름이 'a'로 끝나는 고객 정보
SELECT *
FROM Customer
WHERE name LIKE "Kim%a";
and를 굳이 사용 안해도 정리 가능
9. 휴대폰 번호가 null값이 들어가 있는 고객 정보
SELECT *
FROM Customer
WHERE phone IS NULL;
= NULL을 쓰는 오류를 범하지 않도록 하자
10. 고객번호가 2인 고객의 도서 총 구매액
SELECT SUM(saleprice)
FROM Orders
WHERE custId = 2;
+ 항목이름이 뭔지 기억안나는 것만 주의하자
번외. 1번 고객의 최초 구매일, 마지막 구매일
SELECT min(orderdate), max(orderdate)
FROM Orders
WHERE custId = 1;
날짜라고 해도 min과 max의 범주 안에 들어간다
번외2. 고객ID가 2인 고객이 구매한 책의 수를 세어보자
SELECT COUNT(*)
FROM Orders
WHERE custId = 2;
구매 횟수만 보는 것이기에 *을 사용하여 행의 개수만 세어주어도 충분하다
똑똑한 여러분들이라면 분명 모두 잊지 않고 잘 풀어냈을 것이라 믿는다
'Development Study > Backend' 카테고리의 다른 글
[SQL] 데이터분석의 농경지, CREATE TABLE (0) | 2022.10.20 |
---|---|
[SQL] 데이터분석의 꽃, GROUP BY(~HAVING, DESC) (0) | 2022.10.20 |
[SQL] 연습 문제 ( SELECT함수 ~ 집계 함수 ) (0) | 2022.10.08 |
[SQL] 저장된 데이터를 원하는 대로 찾아보자 ( SELECT ~ 집계 함수 ) (0) | 2022.10.07 |
[GoormIDE/SQL]DB를 외부에서 접속 해보자 (0) | 2022.10.07 |