๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ›‹๏ธ ๋ฐ์ดํ„ฐ ๋ถ„์„/๐Ÿชก SQL QUERY TEST

[Programmers] SUM, MAX, MIN ๋‚œ์ด๋„๋ณ„ ๋ฌธ์ œ/์ •๋‹ต ๋ชจ์Œ

by ์œ ์Šค :) 2024. 11. 27.
๋ฐ˜์‘ํ˜•

๋ชฉ์ฐจ

    [โ˜†] ๊ฐ€์žฅ ๋น„์‹ผ ์ƒํ’ˆ ๊ตฌํ•˜๊ธฐ

     

    Q. PRODUCT ํ…Œ์ด๋ธ”์—์„œ ํŒ๋งค ์ค‘์ธ ์ƒํ’ˆ ์ค‘ ๊ฐ€์žฅ ๋†’์€ ํŒ๋งค๊ฐ€๋ฅผ ์ถœ๋ ฅํ•˜๋Š” SQL๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. ์ด๋•Œ ์ปฌ๋Ÿผ๋ช…์€ MAX_PRICE๋กœ ์ง€์ •ํ•ด์ฃผ์„ธ์š”.

     

    PRODUCT TABLE

     

    SELECT MAX(PRICE) AS MAX_PRICE
    FROM PRODUCT

     

     

    [โ˜†] ์ตœ๋Œ“๊ฐ’ ๊ตฌํ•˜๊ธฐ

     

    Q. ๊ฐ€์žฅ ์ตœ๊ทผ์— ๋“ค์–ด์˜จ ๋™๋ฌผ์€ ์–ธ์ œ ๋“ค์–ด์™”๋Š”์ง€ ์กฐํšŒํ•˜๋Š” SQL ๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. 

     

    ANIMAL_INS TABLE

     

    SELECT MAX(DATETIME) AS ์‹œ๊ฐ„
    FROM ANIMAL_INS

     

     

    [โ˜…] ์žก์€ ๋ฌผ๊ณ ๊ธฐ ์ค‘ ๊ฐ€์žฅ ํฐ ๋ฌผ๊ณ ๊ธฐ์˜ ๊ธธ์ด ๊ตฌํ•˜๊ธฐ

    Q. FISH_INFO ํ…Œ์ด๋ธ”์—์„œ ์žก์€ ๋ฌผ๊ณ ๊ธฐ ์ค‘ ๊ฐ€์žฅ ํฐ ๋ฌผ๊ณ ๊ธฐ์˜ ๊ธธ์ด๋ฅผ 'cm' ๋ฅผ ๋ถ™์—ฌ ์ถœ๋ ฅํ•˜๋Š” SQL ๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

    ์ด ๋•Œ ์ปฌ๋Ÿผ๋ช…์€ 'MAX_LENGTH' ๋กœ ์ง€์ •ํ•ด์ฃผ์„ธ์š”.

     

    FISH_INFO TABLE

     

    SELECT
        CONCAT(MAX(LENGTH), "cm") MAX_LENGTH
    FROM
        FISH_INFO

     

     

    [โ˜†โ˜†] ๊ฐ€๊ฒฉ์ด ์ œ์ผ ๋น„์‹ผ ์‹ํ’ˆ์˜ ์ •๋ณด ์ถœ๋ ฅํ•˜๊ธฐ

    Q. FOOD_PRODUCT ํ…Œ์ด๋ธ”์—์„œ ๊ฐ€๊ฒฉ์ด ์ œ์ผ ๋น„์‹ผ ์‹ํ’ˆ์˜ ์‹ํ’ˆ ID, ์‹ํ’ˆ ์ด๋ฆ„, ์‹ํ’ˆ ์ฝ”๋“œ, ์‹ํ’ˆ๋ถ„๋ฅ˜, ์‹ํ’ˆ ๊ฐ€๊ฒฉ์„ ์กฐํšŒํ•˜๋Š” SQL๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. 

     

    FOOD_PRODUCT TABLE

     

    SELECT PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, PRICE
    FROM FOOD_PRODUCT
    WHERE PRICE = (SELECT MAX(PRICE)
                FROM FOOD_PRODUCT)

     

     

    [โ˜†โ˜†] ์ตœ์†Ÿ๊ฐ’ ๊ตฌํ•˜๊ธฐ

    Q. ๋™๋ฌผ ๋ณดํ˜ธ์†Œ์— ๊ฐ€์žฅ ๋จผ์ € ๋“ค์–ด์˜จ ๋™๋ฌผ์€ ์–ธ์ œ ๋“ค์–ด์™”๋Š”์ง€ ์กฐํšŒํ•˜๋Š” SQL ๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. 

    ANIMAL_INS

     

    SELECT MIN(DATETIME)
    FROM ANIMAL_INS

     

     

    [โ˜†โ˜†]  ๋™๋ฌผ ์ˆ˜ ๊ตฌํ•˜๊ธฐ 

    Q. ๋™๋ฌผ ๋ณดํ˜ธ์†Œ์— ๋™๋ฌผ์ด ๋ช‡ ๋งˆ๋ฆฌ ๋“ค์–ด์™”๋Š”์ง€ ์กฐํšŒํ•˜๋Š” SQL ๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

     

    ANIMAL_INS

     

    SELECT COUNT(ANIMAL_ID)
    FROM ANIMAL_INS

     

     

    [โ˜†โ˜†]  ์ค‘๋ณต ์ œ๊ฑฐํ•˜๊ธฐ

    Q. ๋™๋ฌผ ๋ณดํ˜ธ์†Œ์— ๋“ค์–ด์˜จ ๋™๋ฌผ์˜ ์ด๋ฆ„์€ ๋ช‡ ๊ฐœ์ธ์ง€ ์กฐํšŒํ•˜๋Š” SQL ๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. ์ด๋•Œ ์ด๋ฆ„์ด NULL์ธ ๊ฒฝ์šฐ๋Š” ์ง‘๊ณ„ํ•˜์ง€ ์•Š์œผ๋ฉฐ ์ค‘๋ณต๋˜๋Š” ์ด๋ฆ„์€ ํ•˜๋‚˜๋กœ ์นฉ๋‹ˆ๋‹ค.

     

    ANIMAL_INS

     

    SELECT COUNT( DISTINCT(NAME)) AS cnt
    FROM ANIMAL_INS

     

    ์ฐธ๊ณ ๋กœ COUNT(*)์˜ ๊ฒฝ์šฐ NULL๊ฐ’์„ ํฌํ•จํ•œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜์ง€๋งŒ COUNT(์ปฌ๋Ÿผ ์ด๋ฆ„)์€ NULL๊ฐ’์„ ์ œ์™ธํ•˜์—ฌ ์ฒ˜๋ฆฌํ•œ๋‹ค. 

     

     

    [โ˜†โ˜†]  ์กฐ๊ฑด์— ๋งž๋Š” ์•„์ดํ…œ๋“ค์˜ ๊ฐ€๊ฒฉ์˜ ์ดํ•ฉ ๊ตฌํ•˜๊ธฐ

    Q. ITEM_INFO ํ…Œ์ด๋ธ”์—์„œ ํฌ๊ท€๋„๊ฐ€ 'LEGEND'์ธ ์•„์ดํ…œ๋“ค์˜ ๊ฐ€๊ฒฉ์˜ ์ดํ•ฉ์„ ๊ตฌํ•˜๋Š” SQL๋ฌธ์„ ์ž‘์„ฑํ•ด ์ฃผ์„ธ์š”. ์ด๋•Œ ์ปฌ๋Ÿผ๋ช…์€ 'TOTAL_PRICE'๋กœ ์ง€์ •ํ•ด ์ฃผ์„ธ์š”.

     

    ITEM_INFO

     

    SELECT SUM(PRICE) AS TOTAL_PRICE
    FROM ITEM_INFO
    WHERE RARITY = 'LEGEND'

     

    [โ˜†โ˜†]  ์—ฐ๋„๋ณ„ ๋Œ€์žฅ๊ท  ํฌ๊ธฐ์˜ ํŽธ์ฐจ ๊ตฌํ•˜๊ธฐ

    Q. ๋ถ„ํ™”๋œ ์—ฐ๋„(YEAR), ๋ถ„ํ™”๋œ ์—ฐ๋„๋ณ„ ๋Œ€์žฅ๊ท  ํฌ๊ธฐ์˜ ํŽธ์ฐจ(YEAR_DEV), ๋Œ€์žฅ๊ท  ๊ฐœ์ฒด์˜ ID(ID) ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” SQL ๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. ๋ถ„ํ™”๋œ ์—ฐ๋„๋ณ„ ๋Œ€์žฅ๊ท  ํฌ๊ธฐ์˜ ํŽธ์ฐจ๋Š” ๋ถ„ํ™”๋œ ์—ฐ๋„๋ณ„ ๊ฐ€์žฅ ํฐ ๋Œ€์žฅ๊ท ์˜ ํฌ๊ธฐ - ๊ฐ ๋Œ€์žฅ๊ท ์˜ ํฌ๊ธฐ๋กœ ๊ตฌํ•˜๋ฉฐ ๊ฒฐ๊ณผ๋Š” ์—ฐ๋„์— ๋Œ€ํ•ด ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๊ณ  ๊ฐ™์€ ์—ฐ๋„์— ๋Œ€ํ•ด์„œ๋Š” ๋Œ€์žฅ๊ท  ํฌ๊ธฐ์˜ ํŽธ์ฐจ์— ๋Œ€ํ•ด ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•ด์ฃผ์„ธ์š”.

     

    ECOLI_DATA

     

    WITH M AS (
        SELECT YEAR(DIFFERENTIATION_DATE) AS YEAR, MAX(SIZE_OF_COLONY) AS MAX_SIZE
        FROM ECOLI_DATA
        GROUP BY YEAR)
    SELECT YEAR(E.DIFFERENTIATION_DATE) AS YEAR, M.MAX_SIZE - E.SIZE_OF_COLONY AS YEAR_DEV, E.ID
    FROM ECOLI_DATA AS E JOIN M ON YEAR(E.DIFFERENTIATION_DATE) = M.YEAR
    ORDER BY YEAR,YEAR_DEV;

     

    * ํ•ด๋‹น ๋ฌธ์ œ์˜ ๊ฒฝ์šฐ ์—ฐ๋„๋ฅผ ์ฒ˜๋ฆฌํ•จ์—์žˆ์–ด, DATEFORMAT()์„ ์‚ฌ์šฉํ•˜๋ฉด ์˜ค๋‹ต์œผ๋กœ ์ฒ˜๋ฆฌ๋œ๋‹ค.

    ๊ด€๋ จ ๊ฐœ๋… > 2024.11.13 - [๐Ÿ›‹๏ธ ๋ฐ์ดํ„ฐ ๋ถ„์„/๐Ÿ“‚ SQL] - [MYSQL] ๊ฐœ๋… ์กฐ๊ฐ ๋ชจ์Œ

     

     

    [โ˜†โ˜†โ˜†]  ๋ฌผ๊ณ ๊ธฐ ์ข…๋ฅ˜ ๋ณ„ ๋Œ€์–ด ์ฐพ๊ธฐ

    Q. ๋ฌผ๊ณ ๊ธฐ ์ข…๋ฅ˜ ๋ณ„๋กœ ๊ฐ€์žฅ ํฐ ๋ฌผ๊ณ ๊ธฐ์˜ ID, ๋ฌผ๊ณ ๊ธฐ ์ด๋ฆ„, ๊ธธ์ด๋ฅผ ์ถœ๋ ฅํ•˜๋Š” SQL ๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

    ๋ฌผ๊ณ ๊ธฐ์˜ ID ์ปฌ๋Ÿผ๋ช…์€ ID, ์ด๋ฆ„ ์ปฌ๋Ÿผ๋ช…์€ FISH_NAME, ๊ธธ์ด ์ปฌ๋Ÿผ๋ช…์€ LENGTH๋กœ ํ•ด์ฃผ์„ธ์š”.
    ๊ฒฐ๊ณผ๋Š” ๋ฌผ๊ณ ๊ธฐ์˜ ID์— ๋Œ€ํ•ด ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•ด์ฃผ์„ธ์š”.
    ๋‹จ, ๋ฌผ๊ณ ๊ธฐ ์ข…๋ฅ˜๋ณ„ ๊ฐ€์žฅ ํฐ ๋ฌผ๊ณ ๊ธฐ๋Š” 1๋งˆ๋ฆฌ๋งŒ ์žˆ์œผ๋ฉฐ 10cm ์ดํ•˜์˜ ๋ฌผ๊ณ ๊ธฐ๊ฐ€ ๊ฐ€์žฅ ํฐ ๊ฒฝ์šฐ๋Š” ์—†์Šต๋‹ˆ๋‹ค.

    FISH_INFO, FISH_NAME_INFO TABLE

    SELECT I.ID, N.FISH_NAME, I.LENGTH
    FROM FISH_INFO I JOIN FISH_NAME_INFO N ON I.FISH_TYPE = N.FISH_TYPE
    WHERE I.LENGTH = (
            SELECT MAX(LENGTH) 
            FROM FISH_INFO F
            WHERE F.FISH_TYPE = I.FISH_TYPE
            GROUP BY FISH_TYPE)
    ORDER BY I.ID ASC;

     

    ๋ฐ˜์‘ํ˜•