[프로그래머스] SQL 고득점 Kit - SUM, MAX, MIN, COUNT

박채은·2023년 6월 22일
0

코딩테스트

목록 보기
45/52

1. 가격이 제일 비싼 식품의 정보 출력하기

✔️ 처음에 작성한 코드

SELECT PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, PRICE
from FOOD_PRODUCT
where price = max(PRICE)
  • max(price)와 같은 price를 가지는 경우를 출력하는 코드를 작성했다.
  • 하지만 이렇게 하면 안 된다!
    -> 중첩 select 문을 사용!

최종 코드

SELECT PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, PRICE
from FOOD_PRODUCT
where price = (select max(PRICE) from FOOD_PRODUCT)

✔️ MAX() / MIN()

  • MAX()와 MIN()은 SELECT 문에서 최대/최소값을 표현할 때 사용된다.
  • 따라서 where 절에서 바로 사용될 수 없으며, where 절에서 사용하려면 중첩 select 문을 사용해야 한다.
SELECT *
FROM employees
WHERE salary = (SELECT MAX(salary)
                FROM employees
                WHERE department_id=30);

-> 부서 id가 30인 부서에서, 최대 급여를 받은 직원의 정보를 출력하는 경우

https://www.programiz.com/sql/min-and-max
https://www.techonthenet.com/sql/max.php


3. 최댓값/최솟값 구하기

  • max()에 꼭 INT값이 아니라도, DATETIME 타입도 들어갈 수 있다.
select max(DATETIME) from ANIMAL_INS;
SELECT min(DATETIME) from ANIMAL_INS;

4. 중복 제거하기

  • 동물 보호소에 들어온 동물의 이름은 몇 개인지 조회
  • 이름이 NULL인 경우는 집계하지 않으며 중복되는 이름은 하나로 친다.
SELECT count(distinct name)
from ANIMAL_INS;
  • count(distinct name)는 NULL을 제외한 중복되지 않는 값만 count하기 때문에 굳이 NULL에 대한 처리를 하지 않아도 된다.

✔️ COUNT()

  • COUNT(*) : NULL을 포함해서 전부 count 한다.
  • COUNT(ColumnName) : NULL 값을 제외하고 전부 count 한다.
  • COUNT(distinct ColumnName) : NULL을 제외한 중복되지 않은 값만 count 한다.

https://chanhuiseok.github.io/posts/db-4/

0개의 댓글