[손에 잡히는 10분 SQL - 벤 포터 지음, 박남혜 옮김] 책의 학습 후 정리자료입니다.
SELECT vend_id, COUNT(*) AS num_prods
FROM Products
GROUP BY vend_id;
vend_id
으로 그룹핑하고 데이터를 정렬하라고 명령한다.vend_id
의 값이 나올 때마다 num_prods
의 값을 증가시킨다.SELECT cust_id, COUNT(*) AS orders
FROM Orders
GROUP BY cust_id
HAVING COUNT(*) >= 2;
prod_price
)이 4 이상이고, 제품을 2개 이상 가진 판매처를 출력한 경우SELECT vend_id, COUNT(*) AS num_prods
FROM Products
WHERE prod_price >= 4
GROUP BY vend_id
HAVING COUNT(*) >= 2;
SELECT order_num, COUNT(*) AS items
FROM OrderItems
GROUP BY order_num
HAVING COUNT(*) >= 3
ORDER BY items, order_num;
절 | 설명 | 필수 |
---|---|---|
SELECT | 가져올 열이나 수식 | YES |
FROM | 데이터를 가져올 테이블 | 테이블에서 데이터를 가져올 때 사용한다. |
WHERE | 행 레벨 필터링 | NO |
GROUP BY | 그룹 지정 | 그룹핑한 데이터로 집계 계산을 할 때 사용한다. |
HAVING | 그룹 레벨 필터링 | NO |
ORDER BY | 정렬 순서 | NO |
OrderItems
테이블은 각각의 주문에 대한 개별 항목을 포함하고 있다, 주문 번호(order_num
)에 해당하는 줄 수를 order_lines
라고 표시하고, 결과를 order_lines
로 정렬하는 SQL 문을 작성하라.SELECT order_num, COUNT(*) AS order_lines
FROM OrderItems
GROUP BY order_num
ORDER BY order_lines;
Products
테이블에 있는 prod_price
를 사용하여, 각 판매처에서 취급하는 가장 저렴한 항목을 cheapest_item
이라고 이름 짓고 가격순(최저가에서 최고가)으로 정렬하는 SQL 문을 작성하라.SELECT vend_id, MIN(prod_price) AS cheapest_item
FROM Products
GROUP BY vend_id
ORDER BY cheapest_item;
OrderItems
테이블의 order_num
이용)를 가져오는 SQL 문을 작성하라.SELECT order_num
FROM OrderItems
GROUP BY order_num
HAVING SUM(quantity) >= 100
ORDER BY order_num;
OrderItmes
테이블의 order_num
)를 가져와 주문 번호로 정렬하는 SQL 문을 작성하라. 이를 해결하려면 item_price
와 수량을 곱한 값을 모두 합해야 한다.SELECT order_num, SUM(item_price*quantity) AS total_price
FROM OrderItems
GROUP BY order_num
HAVING SUM(item_price*quantity) >= 1000
ORDER BY order_num;
SELECT order_num, COUNT(*) AS items
FROM OrderItems
GROUP BY itmes
HAVING COUNT(*) >= 3
ORDER BY items, order_num;
items
는 별칭이므로 그룹핑의 대상이 될 수 없다.items
를 order_num
으로 변경한다.SELECT order_num, COUNT(*) AS items
FROM OrderItems
GROUP BY order_num
HAVING COUNT(*) >= 3
ORDER BY items, order_num;