SQL에서 정렬과 집계의 활용이란.

정렬을 통해 어떤 순서에 따라 컬럼을 반환할지 결정하고

집계를 통해 어떤식으로 데이터를 요약할지 결정한다.

정렬 : ORDER BY

  • 구문
    • ORDER BY 컬럼명 ASC / DESC
  • 오름차순 : 공란 or ASC
  • 내림차순 : DESC를 사용.

예시)

- -가격 내림차순 정렬 예시
SELECT *
FROM products
WHERE 1=1
AND category in ('주방용품', '디지털')
ORDER BY price DESC -- 가격 내림차순 정렬
  • 여러 개의 정렬조건을 만들때에는 우선 정렬을 먼저 적어줌.

예시)

  • -가격을 오름차순, 가격이 같다면 이름으로 내림차순
    ORDER BY price, name DESC
  • 컬럼명 대신 숫자를 사용할 수 있음.

예시)

  • SELECT로 가져온 최종 결과 컬럼을 순서대로 price = 1, name = 2로 정의됨.
- -가격오름차순, 가격이 같다면 이름 내림차순
SELECT price, name
FROM products
WHERE 1=1
ORDER BY 1, 2 DESC

집계

합계, 평균, 갯수 등 집계함수라 지칭함.

  • SELECT 구문에서 사용.

예시)

SELECT SUM(price) as sum_price,
AVG(price) as avg_price,
COUNT(price) as cnt 
--가격 합계, 가격 평균, 가격 갯수를 구함.
--as : 별칭을 구해줌. SUM(price)로 구해준 값을 보여줄때에는 sum_price라는 별칭의 컬럼으로 보여줌.

AS

  • SELECT 구문에서 컬럼의 별칭을 지어 줌.

예시)

  • 컬럼을 새로 만들어서 값을 넣는것도 가능.
SELECT "programmers" as new_col 
--new_col이라는 신규 컬럼에 programmers이라는 값이 추가됨.(하기 사진참고)

WOW!

COUNT

  • 조건(WHERE)에 맞는 행 수 를 세줌.
    • COUNT(*), COUNT(1)
      • 모든 행(NULL 포함) 수를 세줌
    • COUNT(컬럼명)
      • NULL 제외 컬럼의 수를 세줌
    • DISTINCT
      • 중복을 제외하여 행 수를 셀 때 사용
      • 예) COUNT(DSTINCT 컬럼명)

GROUP BY

같은 값을 묶을 수 있음.

예시)

SELECT category, COUNT(*) AS sales_cnt -- 카테고리와 전체 행 수를 구함. 
FROM products_v3 
WHERE 1=1 
AND sale_yn ='yes' 
GROUP BY category --카테고리의 중복값을 묶음. 
--카테고리별 sale_yn의 수를 가져옴.
  • HAVING
    • 그룹화 이후의 조건절.
      • SELECT에서 WHERE가 있다면, GROUP BY 에는 HAVING이 있음.

0개의 댓글