Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 백준 10866 자바
- 파이썬
- 자바
- IAM 사용자
- 2748 자바
- 그리디
- 1010 자바
- 2164 자바
- 자바 2164
- IAM Identity Center
- 데보션영 3기
- 백준 1764 자바
- 1764 자바
- 자바 2346
- 10807 자바
- 자바 28278
- 코딩테스트
- 백준 28278 자바
- 자바 10866
- dfs
- 2798 자바
- 티움투어
- 28278 스택 2
- 자바 1003
- BFS
- 10810 자바
- 백준 2346 자바
- 10813 자바
- 백준
- 2346 풍선 터뜨리기
Archives
- Today
- Total
자두의 데브로그
[MySQL] SQL 문제 풀이 - SUM, MAX, MIN 본문
가장 비싼 상품 구하기
-- 코드를 입력하세요
SELECT MAX(PRICE) AS MAX_PRICE FROM PRODUCT;
가격이 제일 비싼 식품의 정보 출력하기
-- 코드를 입력하세요
SELECT PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, PRICE FROM FOOD_PRODUCT WHERE PRICE = (
SELECT MAX(PRICE) FROM FOOD_PRODUCT
);
[새로 알게 된 점]
- 집계 함수와 함께 출력하는 다른 속성들은 모두 첫 번째 값을 출력하게 된다.
- 중첩 SQL문을 통해 필요로 하는 값을 갖는 경우에 대해 WHERE 조건을 걸면 된다.
최솟값 구하기
-- 코드를 입력하세요
SELECT MIN(DATETIME) FROM ANIMAL_INS;
[새로 알게 된 점]
- DATETIME 속성의 값도 최솟값을 구하기 위해서는 MIN() 함수를 사용하면 된다.
동물 수 구하기
-- 코드를 입력하세요
SELECT COUNT(*) FROM ANIMAL_INS;
중복 제거하기
-- 코드를 입력하세요
SELECT COUNT(DISTINCT NAME) FROM ANIMAL_INS WHERE NAME is not null;
[새로 알게 된 점]
- 중복되는 속성을 제외하고 출력하기 위해서는 DISTINCT 를 사용한다.
조건에 맞는 아이템들의 가격의 총합 구하기
-- 코드를 작성해주세요
SELECT SUM(PRICE) AS TOTAL_PRICE FROM ITEM_INFO WHERE RARITY = "LEGEND";
물고기 종류 별 대어 찾기
# -- 코드를 작성해주세요
# SELECT i.ID, FISH_NAME, LENGTH FROM FISH_INFO i JOIN FISH_NAME_INFO n ON i.FISH_TYPE = n.FISH_TYPE WHERE LENGTH IN (
# SELECT MAX(LENGTH) FROM FISH_INFO f GROUP BY f.FISH_TYPE
# )
# ORDER BY i.ID;
# WITH FISH AS (
# SELECT ID, FISH_NAME, LENGTH FROM FISH_INFO i
# JOIN FISH_NAME_INFO n
# ON i.FISH_TYPE = n.FISH_TYPE
# WHERE LENGTH IN (
# SELECT MAX(LENGTH) FROM FISH_INFO GROUP BY FISH_TYPE
# )
# ORDER BY ID
# )
# SELECT ID, FISH_NAME, LENGTH FROM FISH;
SELECT ID, FISH_NAME, LENGTH FROM FISH_INFO i JOIN FISH_NAME_INFO n ON i.FISH_TYPE = n.FISH_TYPE WHERE (i.FISH_TYPE,LENGTH) IN (
SELECT FISH_TYPE, MAX(LENGTH) FROM FISH_INFO GROUP BY FISH_TYPE
)
ORDER BY ID;
[새로 알게 된 점]
- WITH 사용하는 방법 - 임시 테이블 만들어서 사용 가능 (근데 이거로 문제 풀었지만 틀림)
- IN 사용할 때 여러 컬럼 넣을 수 있음!
- GROUP BY 다음에 ORDER BY 오는 것!
- USING - 테이블을 JOIN할 때 ON으로 하지 않고 컬럼명이 같은 경우 USING을 통해 JOIN 할 수도 있다. (아래 참고)
SELECT ID, FISH_NAME, LENGTH FROM FISH_INFO JOIN FISH_NAME_INFO USING(FISH_TYPE) WHERE (FISH_TYPE,LENGTH) IN (
SELECT FISH_TYPE, MAX(LENGTH) FROM FISH_INFO GROUP BY FISH_TYPE
)
ORDER BY ID;
연도별 대장균 크기의 편차 구하기
-- 코드를 작성해주세요
WITH MAX_SIZE AS (
SELECT YEAR(DIFFERENTIATION_DATE) AS YEAR, MAX(SIZE_OF_COLONY) AS SIZE FROM ECOLI_DATA
GROUP BY YEAR
)
SELECT YEAR(DIFFERENTIATION_DATE) AS YEAR, SIZE - SIZE_OF_COLONY AS YEAR_DEV, ID FROM ECOLI_DATA E JOIN MAX_SIZE M ON YEAR(DIFFERENTIATION_DATE) = M.YEAR
ORDER BY YEAR, YEAR_DEV;
[새로 알게 된 점]
- DATE_FORMAT 사용하면 결과 값이 String으로 출력돼서 YEAR() 함수를 사용해서 문제를 풀어야 한다.
- ON 에 사용하는 속성의 경우, ALIAS로 설정한 별명으로 출력하려고 하면 안된다. ex. E.YEAR = M.YEAR 은 오류남!
- ORDER BY는 SELECT 이후에 실행돼서 ALIAS로 설정해도 되는 것 같다!
'코딩테스트 > SQL' 카테고리의 다른 글
[MySQL] 프로그래머스 12세 이하인 여자 환자 목록 출력하기 (0) | 2024.10.10 |
---|---|
[MySQL] SQL 문제 풀이 - JOIN (2) (0) | 2024.08.05 |
[MySQL] SQL 문제 풀이 - JOIN (1) (0) | 2024.08.05 |
[MySQL] SQL 문제 풀이 - SELECT (2) (0) | 2024.07.30 |
[MySQL] SQL 문제 풀이 - SELECT (1) (0) | 2024.07.27 |