SUM, MAX, MIN - MySQL 풀이

송철진·2023년 3월 16일
0

프로그래머스-MySQL

목록 보기
3/7

Lv.1

가장 비싼 상품 구하기

SELECT MAX(PRICE) AS MAX_PRICE
FROM PRODUCT

FROM - PRODUCT 테이블에서
SELECT - 판매 중인 상품 중 가장 높은 판매가를 출력. 컬럼명은 MAX_PRICE로 지정

최댓값 구하기

SELECT MAX(DATETIME) AS 시간
FROM ANIMAL_INS
SELECT DATETIME AS 시간
FROM ANIMAL_INS
ORDER BY DATETIME DESC LIMIT 1

위으 두 SQL구문은 동일한 결과를 표시하지만
MAX()함수를 쓰는 편이 ORDER BY와 LIMIT를 사용하는 것보다
코드의 길이를 줄일 수 있다.

Lv.2

최솟값 구하기

SELECT MIN(DATETIME) AS 시간 
FROM ANIMAL_INS

동물 보호소에 가장 먼저 들어온 동물은 언제 들어왔는지 조회

Lv.1 최댓값 구하기 문제와 동일한 문제인데 왜 Lv.2일까

가격이 제일 비싼 식품 정보

SELECT *
FROM FOOD_PRODUCT
ORDER BY PRICE DESC LIMIT 1
SELECT *
FROM FOOD_PRODUCT
WHERE PRICE = (
    SELECT 
        MAX(PRICE) 
    FROM FOOD_PRODUCT
)

FROM - FOOD_PRODUCT 테이블에서
WHERE - 가격이 제일 비싼 식품의
SELECT - 식품 ID, 식품 이름, 식품 코드, 식품분류, 식품 가격을 조회

동물 수 구하기

SELECT count(*)
FROM ANIMAL_INS

동물 보호소에 동물이 몇 마리 들어왔는지 조회

중복 제거하기

SELECT COUNT(DISTINCT NAME) AS COUNT
FROM ANIMAL_INS
WHERE NAME <> 'NULL'

SELECT - 동물 보호소에 들어온 동물의 이름은 몇 개인지 조회.
WHERE - 이때 이름이 NULL인 경우는 집계하지 않으며
DISTINCT - 중복되는 이름은 하나로 칩니다.

DISTINCT(컬럼) 함수
중복을 제거하는 함수다.

테이블 생성 시 동일한 값이 들어가지 않도록
UNIQUE 제약조건을 설정할 수 있다.

Persons테이블에서 ID컬럼에만 설정했을 때

CREATE TABLE Persons (
    ID int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int,
    UNIQUE (ID)
);

Persons테이블에서 제한조건에 이름을 붙이고, ID,LastName 등 여러 컬럼에 설정했을 때

CREATE TABLE Persons (
    ID int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int,
    CONSTRAINT UC_Person UNIQUE (ID,LastName)
);
profile
검색하고 기록하며 학습하는 백엔드 개발자

0개의 댓글