Database
[MySQL] Group by 결과로 sort, 여러 조건을 결과로 sort
father6019
2024. 6. 11. 21:59
728x90
반응형
MySQL에서 GROUP BY 절을 사용하여 데이터를 그룹화한 후, ORDER BY 절을 사용하여 결과를 정렬하는 방법
일단 테스트 테이블 생성
CREATE TABLE sales (
id INT AUTO_INCREMENT PRIMARY KEY,
product_name VARCHAR(255),
quantity INT,
price DECIMAL(10, 2)
);
이런식으로 상품명으로 그룹핑하고 상품명에 대한 판매량 (quantity) 모두 더해 총 판매량으로 만든 후 order by 절을 이용한 내림차순(DESC) 정렬
SELECT product_name, SUM(quantity) AS total_quantity
FROM sales
GROUP BY product_name
ORDER BY total_quantity DESC;
CASE WHEN 절의 조건으로 SUM 을 하여 total 을 구하고 그 결과로 order by 절을 이용한 정렬
SELECT
customer_id,
SUM(CASE WHEN order_status = 'Completed' THEN order_amount ELSE 0 END) AS completed_order_total,
SUM(CASE WHEN order_status = 'Pending' THEN order_amount ELSE 0 END) AS pending_order_total
FROM
orders
GROUP BY
customer_id
ORDER BY completed_order_total DESC, pending_order_total DESC;
SUM 안에 IF 문을 넣은 수도 있고 IF 문 안에서 SUM 을 해서 조건을 다르게 할 수도 있다.
SELECT
customer_id,
SUM(IF(order_status = 'Completed', order_amount, 0)) AS completed_order_total,
IF(SUM(IF(order_status = 'Completed', order_amount, 0)) >= 100, 'High Spender', 'Regular Spender') AS spender_category
FROM
orders
GROUP BY
customer_id;
물론 이 모든 쿼리는 실행계획을 통해서 성능을 확인해봐야 할 듯
728x90
반응형