티스토리 뷰

알고리즘

프로그래머스 SQL 답지

killog 2021. 3. 12. 08:41
반응형

최댓값 구하기

SELECT MAX(DATETIME) AS "시간" FROM ANIMAL_INS; # 최신거 하나

모든 레코드 조회하기

SELECT * FROM ANIMAL_INS INC; # 아이디 오름차순

역순 정렬하기 : 아이디 역순 정렬

SELECT NAME,DATETIME FROM ANIMAL_INS ORDER BY ANIMAL_ID DESC;

아픈 동물 찾기

SELECT ANIMAL_ID , NAME FROM ANIMAL_INS WHERE INTAKE_CONDITION="Sick";

우유와 요거트가 담긴 장바구니 (❤❤❤)

SELECT CART_ID FROM CART_PRODUCTS GROUP BY CART_ID HAVING COUNT(case WHEN NAME ="Milk" then 1 end)>0 and COUNT(case WHEN NAME ="Yogurt" then 1 end)>0;

어린 동물 찾기

SELECT  ANIMAL_ID , NAME FROM ANIMAL_INS WHERE INTAKE_CONDITION<>"Aged";

동물의 아이디와 이름

-- 코드를 입력하세요
SELECT animal_id , name from animal_ins order by animal_id;

최솟값 구하기

SELECT MIN(DATETIME) AS "시간" FROM ANIMAL_INS ;

여러 기준으로 정렬하기

SELECT ANIMAL_ID, NAME, DATETIME FROM ANIMAL_INS ORDER BY NAME , DATETIME DESC;

이름이 없는 동물의 아이디 (IS NULL)

SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME IS NULL ORDER BY ANIMAL_ID;

동물 수 구하기

SELECT COUNT(*) FROM ANIMAL_INS;

상위 n개 레코드

SELECT  NAME FROM ANIMAL_INS WHERE DATETIME=(SELECT MIN(DATETIME) FROM ANIMAL_INS);

이름이 있는 동물의 아이디

SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME IS NOT NULL ;

중복 제거하기(❤❤)

SELECT count(distinct NAME) as count FROM ANIMAL_INS  WHERE NAME IS NOT NULL;

고양이와 개는 몇 마리 있을까(❤❤❤❤❤)

SELECT ANIMAL_TYPE, COUNT(ANIMAL_TYPE) AS COUNT
FROM ANIMAL_INS
GROUP BY ANIMAL_TYPE
ORDER BY
CASE ANIMAL_TYPE
    WHEN 'Cat' THEN 1
    WHEN 'Dog' THEN 2
    ELSE 3
END

동명 동물 수 찾기(❤)

SELECT NAME, COUNT(NAME) AS COUNT  FROM ANIMAL_INS GROUP BY NAME HAVING COUNT(NAME)>1 ORDER BY NAME;

NULL 처리하기

  • null 값 처리 하기(❤)
SELECT ANIMAL_TYPE,     ifnull(NAME,"No name"),    SEX_UPON_INTAKE FROM ANIMAL_INS ORDER BY ANIMAL_ID  ;

입양 시각 구하기(1)

SELECT HOUR(DATETIME) HOUR, COUNT(DATETIME) COUNT
FROM ANIMAL_OUTS
GROUP BY HOUR(DATETIME)
HAVING HOUR >= 9 and HOUR <= 19 order by hour

없어진 기록 찾기

SELECT OUTS.ANIMAL_ID, OUTS.NAME
FROM ANIMAL_OUTS OUTS
LEFT OUTER JOIN ANIMAL_INS INS
ON OUTS.ANIMAL_ID = INS.ANIMAL_ID
WHERE INS.ANIMAL_ID is NULL
ORDER BY OUTS.ANIMAL_ID

있었는데요 없었습니다

SELECT INS.ANIMAL_ID,    INS.NAME FROM ANIMAL_INS INS JOIN  ANIMAL_OUTS OUTS ON INS.ANIMAL_ID = OUTS.ANIMAL_ID WHERE INS.DATETIME>OUTS.DATETIME ORDER BY INS.DATETIME;

입양 시각 구하기(1) (없는 것을 보여주기 위한 변수 설정과 반복문)(❤❤❤❤❤)

SET @HOUR :=-1;
SELECT 
    (@HOUR := @HOUR+1    ) AS HOUR,
    (SELECT COUNT(*) FROM ANIMAL_OUTS WHERE HOUR(DATETIME)=@HOUR) AS COUNT
FROM ANIMAL_OUTS
WHERE @HOUR<23;

입양 시각 구하기(2) (개수 제한은 LIMIT)

SELECT INS.NAME , INS.DATETIME FROM ANIMAL_INS INS LEFT JOIN ANIMAL_OUTS OUTS ON INS.ANIMAL_ID = OUTS.ANIMAL_ID WHERE OUTS.ANIMAL_ID IS NULL  ORDER BY  INS.DATETIME LIMIT 3;

오랜 기간 보호한 동물(1)

SELECT INS.ANIMAL_ID,INS.ANIMAL_TYPE,INS.NAME FROM ANIMAL_INS INS RIGHT JOIN ANIMAL_OUTS  OUTS ON INS.ANIMAL_ID = OUTS.ANIMAL_ID WHERE  INS.SEX_UPON_INTAKE<> OUTS.SEX_UPON_OUTCOME ORDER BY INS.ANIMAL_ID;

보호소에서 중성화한 동물

SELECT INS.ANIMAL_ID,INS.NAME,INS.SEX_UPON_INTAKE FROM ANIMAL_INS INS WHERE INS.NAME ="Lucy" or INS.NAME ="Ella" or   INS.NAME ="Pickle"  or  INS.NAME ="Rogan"  or  INS.NAME ="Sabrina"  or  INS.NAME ="Mitty" ;

루시와 엘라 찾기
이름에 el이 들어가는 동물 찾기

SELECT ANIMAL_ID,    NAME from ANIMAL_INS where NAME like "%EL%" AND ANIMAL_TYPE="dog" order by NAME;

중성화 여부 파악하기 (중요)

SELECT ANIMAL_ID    ,NAME,    CASE WHEN SEX_UPON_INTAKE LIKE "%Spayed%" OR SEX_UPON_INTAKE LIKE "%Neutered%"  THEN "O" ELSE "X" END   AS "중성화" FROM ANIMAL_INS ORDER BY ANIMAL_ID;

오랜 기간 보호한 동물(2)

SELECT  INS.ANIMAL_ID, INS.NAME FROM ANIMAL_INS INS JOIN  ANIMAL_OUTS OUTS ON OUTS.ANIMAL_ID = INS.ANIMAL_ID   ORDER BY -OUTS.DATETIME+INS.DATETIME LIMIT 2;

DATETIME에서 DATE로 형 변환 (❤❤❤❤)

SELECT ANIMAL_ID, NAME, DATE_FORMAT(DATETIME, '%Y-%m-%d') AS 날짜 FROM ANIMAL_INS ORDER BY ANIMAL_ID;
반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/12   »
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 31
글 보관함