아빠는 개발자

[MySQL] Group by 결과로 sort, 여러 조건을 결과로 sort 본문

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
반응형

'Database' 카테고리의 다른 글

[DB] DBeaver - Public key retrieval is not allowed  (0) 2024.08.11
[database] DBeaver 다운로드  (0) 2024.01.07
[MySQL] Ngram  (1) 2024.01.07
[MySql] MySQLWorkbench EER diagram 그리기  (0) 2023.09.02