ORDER BY, COUNT,GROUP BY, HAVING,CASE WHEN,

윤주영·2024년 10월 10일

ORDER BY 열 이름 ASC (DESC)

  • 오름차순 : ASC (default)
  • 내림차순 : DESC

1)오름차순은 열이름 뒤에 ASC (생략가능) , 내림차순은 DESC

2)여러개의 열이름을 이용해 정렬하고 싶을때는 콤마로 구분 (e.g.,)

  • ORDER BY 고객가입일 DESC, 고객이름 ASC

집계함수 COUNT

SELECT COUNT(*) => 총 고객이 몇명인지 확인할때 쓰는함수이다.

1.집계함수 중에 하나이다.

2. 행(row)의 수를 셀때 사용한다.

3. COUNT(*) 혹은 COUNT(열이름)으로 사용한다.

4. 뒤에 AS를 붙이고 이 열의 새로운 이름을 적는다.

5. COUNT(DISTINCT 열이름)을 사용하면 unique한 행의 수를 센다

예시)

SELECT COUNT(customer_id) as total_customers,
COUNT(DISTINCT customer_id) as total_unique_customers
FROM CUSTMERS

customer_id => 중복된 열이름을 뒤에 AS를 넣고 새로운이름으로 사용된다.
AS 는 생략이 가능하다. 에러 생길수도 있고 안생길수도 있지만 쓰는게 나을듯 하다.

DISTINCT => 중복제거 할때 쓰이는 함수
DISTINCT 참조 https://bio-info.tistory.com/110
UNIQUE => 제약조건, 특정 컬럼에 대해 자료가 중복되지 않게 하는것
UNIQUE 참조 https://velog.io/@eunah/SQL-UNIQUE

  • GROUP BY 사용법

1.WHERE 다음에 쓴다. (ORDER BY 전에 쓴다)

2. 대부분의 경우에는 SELECT 뒤에 나오는 열과 GROUP BY 뒤에 나오는 열이 같지만,

아닐수도 있다. SELECT 뒤에 열 이름은 반드시 GROUP BY 뒤에 쓴 열이름 중 하나를 써야한다.

3. SELECT 뒤에 나오는 열이름 (GROUP BY 뒤에 나와있는 열 이름 중이어야 하며) 외에는

집계함수 ( COUNT, SUM, AVG, MIN, MAX ,,,)를 사용해야한다.

GROUP BY는 그냥 원래 값을 출력하기 위함이 아니라 그룹별 갯수, 합계, 평균, 최소값, 최대값 등등을 구하기 위함이다.(평균값을 많이 냄)

HAVING

SELECT 열이름, SUM(열이름)
FROM 테이블이름
WHERE 조건문
GROUP BY 열이름
HAVING 조건문 (집계결과에 대해)

  1. GROUP BY 다음에 쓴다 (ORDER BY 전에 쓴다)
  2. 조건문을 쓴다는 점에서 WHERE 과 용법이 비슷하지만, 가장 큰 차이점은 :

    WHERE - GROUP BY 전에 필터링 하는 것
    HAVING - GROUP BY 결과를 필터링 하는 것

CASE WHEN

( 열 이름을 이용해 새로운 열을 만들고 싶을때)

SELECT *,
CASE WHEN Sales >= 1000
// 어떤 만족을 시키는지 쓰며, 세일이 $1000 이상이면
THEN 'High Sale'
// High Sale 로 표시하고
ELSE 'Low sale'
// 그게 아니면 Low sale 표시하라
END
//끝
AS COLUMN_NAME // 새로운 이름으로 지정함
FROM 고객표
WHERE 날짜 = '2023-08-04'

기존의 열과 조건문을 이용해서 새로운 열을 만들고 싶을때

CASE
WHEN 조건 1 THEN '이름1'
WHEN 조건 2 THEN '이름2'
WHEN 조건 3 THEN '이름3'
ELSE '이름4' END AS 새로운열이름

  1. 조건문은 순차적으로 진행한다.
    예를들어, 첫번째 조건을 만족하면 다음조건들을 확인하지 않고 바로 첫번째 이름을 부여한다.
  2. 마지막 ELSE는 생략이 가능하다 (END는 생략가능하지 않음)
profile
반갑습니다.

0개의 댓글