DBMS - 쇼핑몰 문제

RYU·2025년 4월 12일

DBMS

목록 보기
7/9

쇼핑몰 주문 테이블

손흥민의 주문 개수?

SELECT COUNT(*) AS '손흥민의 주문 개수' FROM t_shopping
WHERE username ='손흥민';

  • COUNT()
    • 테이블에 컬럼의 데이터 갯수를 반환
    • 이때, NULL인 데이터는 제외하고 갯수를 반환한다.
  SELECT COUNT(*) FROM 테이블명;
  SELECT COUNT(컬럼명) FROM 테이블명;

손흥민이 산 상품은?

# 중복 배제 x
SELECT pname FROM t_shopping
WHERE username = '손흥민';

# 중복 배제
SELECT DISTINCT pname FROM t_shopping
WHERE username = '손흥민';

  • DISTINCT() : 중복 값 배제

스커트를 산 사람은?

# 전체 조회
SELECT * FROM t_shopping
WHERE pname= '스커트';

# 원하는 정보만 조회
SELECT userId, username, pname FROM t_shopping
WHERE pname = '스커트';

가장 많이 주문한 사람의 아이디와 이름, 주문개수는?

SELECT userId, username, COUNT(*) AS '주문개수' FROM t_shopping
GROUP BY username
ORDER BY COUNT(*) DESC
LIMIT 1;

  • GROUP BY()

    • 데이터를 조회할때 그룹으로 묶어서 조회해주는 쿼리

      SELECT 컬럼명 or * FROM 테이블명
      GROUP BY 그룹화할 컬럼명;

소지섭이 사용한 총 금액은?

SELECT SUM(price) FROM t_shopping
WHERE username ='소지섭';
  • SUM()
    • 테이블에 존재하는 컬럼의 합을 구하고 싶을 때 사용하는 함수
    • 컬럼의 타입이 숫자형인 경우에만 사용할 수 있다.

쇼핑 분리 테이블

손흥민의 주문 개수?

SELECT COUNT(*) AS '손흥민의 주문 개수' FROM t_order
WHERE userNo = 1;
  • 세 가지 테이블을 다 보았을때 '손흥민'이 가지고 있는 공통 속성을 찾으면 된다.

손흥민이 산 상품은?

# v1
SELECT pname FROM t_product
WHERE id IN(1,5);

# v2
SELECT pname FROM t_product
WHERE id = 1 OR id = 5;

스커트를 산 사람은?


SELECT * FROM t_user
WHERE id = 4;

가장 많이 주문한 사람의 아이디와 이름, 주문개수는?

SELECT userNo, COUNT(userNo) FROM t_order
GROUP BY userNo
ORDER BY COUNT(userNO) DESC;

SELECT userId, userName FROM t_user
WHERE id = 1;

  • 먼저 t_order에서 t_user에 해당하는 번호, 즉 userNo를 그룹화하고 (공통된 번호들이 있으니까)
    그룹화된 userNo의 갯수를 센 다음, 가장 많이 주문한 번호를 찾아야 하므로 count를 내림차순으로 적용하면 userNo - 1이 제일 갯수가 많은걸 알 수 있다.
  • 주문한 사람의 아이다와 이름을 조회하고 싶으니 t_user에 id가 1인 사람을 조회하면 내가 원하는 결과를 조회할 수 있다.

소지섭이 사용한 총 금액은?

# 소지섭의 해당하는 상품번호 조회
SELECT * FROM t_order
WHERE userNo = 5;

# 상품번호를 조회 후 산 상품의 가격 모두 더한값 조회
SELECT SUM(price) AS ' 소지섭이 사용한 총 금액' FROM t_product
WHERE id IN(5,8);

0개의 댓글