ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 12/6
    스파르타/TIL(Today I Learned) 2023. 12. 6. 18:25

    오늘도 어김없이 프로그래머스를 푼다.

    오늘은 놀랍게도 한 문제에  거의 3시간을 쏟은거 같은데

    "아 뭔가 좀만 더 하면 풀 수 있을거 같은데"

    라는 생각에 3시간 잡아먹고 못풀었따 ㅎ

     


    문제  : 
    MEMBER_PROFILE와 REST_REVIEW 테이블에서 리뷰를 가장 많이 작성한 회원의 리뷰들을 조회하는 SQL문을 작성해주세요. 회원 이름, 리뷰 텍스트, 리뷰 작성일이 출력되도록 작성해주시고, 결과는 리뷰 작성일을 기준으로 오름차순, 리뷰 작성일이 같다면 리뷰 텍스트를 기준으로 오름차순 정렬해주세요.

    이 문제에서 내가 실수한 부분은

    문제를 이해 못해서

    자꾸  뻘짓을 하였다 ㅠ

     

    예시 답안을 보면

    리뷰를 가장 많이 작성한 회원의 리뷰를 조회해야한다.

    RANK함수에 COUNT를 사용하니 최고로 많이 작성한 사람은 알았는데

    조건이나 조회 부분에서 잘못되어  한개만 추출되었다.

     

    그래서 오늘도 어김없이 여러개의 다른 사람의 풀이를 보고

    검색도 해보고 해서 이해를 했다.

     

    문제를 잘못 이해해서 날린 시간이 많이 아까웠다 :(

     

    SELECT A.MEMBER_NAME,B.REVIEW_TEXT,DATE_FORMAT(B.REVIEW_DATE, "%Y-%m-%d") AS REVIEW_DATE
    from MEMBER_PROFILE A join REST_REVIEW B
    on A.MEMBER_ID = B.MEMBER_ID
    WHERE A.MEMBER_ID = (
        SELECT MEMBER_ID 
        FROM REST_REVIEW
        GROUP BY MEMBER_ID
        ORDER BY COUNT(*) DESC LIMIT 1
    )
    order by REVIEW_DATE asc, REVIEW_TEXT

    입양 시각 구하기(2)

    문제 :

    보호소에서는 몇 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다. 0시부터 23시까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요. 이때 결과는 시간대 순으로 정렬해야 합니다.

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

    문제가 상당히 쉬워보여서

    덤볐다가 큰코 다친 문제

    시간이 0시 ~ 23시까지

    답이 0시~ 23시 HOUR측에 0부터 나와야 하는데

    GROUP BY로 그냥 하면 데이터가 있는 7시부터 나온다

    즉 0~23까지 나오는 변수측이 나와야한다.

     

    아예 새로운 변수를 만들어야 하는데 놀랍게도 배운적이 없다.

    그래서 오늘도 질문하기를 보았지만

    SET이라는 처음 보는 거를 다들 쓰는거같았다.

    내가 아는건 UPDATE SET인데... :(

     

    그래서 SET을 보면 새로운 변수를 만든다.

     

    SET @hour := -1  >>> 변수 선언문

    -1을 한 이유는 0부터 추출하기 위해서이다 .

     

    PL/-SQL 문법에서 :=은 비교 연산자 =과 혼동을 피하기 위한의 대입 연산이다

    @가 붙은 변수는 프로시저가 종료되어도 유지된다고 생각하면 됩니다

    라고 다른 글에서 봤다.

     

    https://school.programmers.co.kr/learn/courses/30/lessons/59413

    '스파르타 > TIL(Today I Learned)' 카테고리의 다른 글

    12/08  (0) 2023.12.08
    12/07  (2) 2023.12.07
    12/5  (0) 2023.12.05
    12/4  (3) 2023.12.04
    12/01  (1) 2023.12.01
Designed by Tistory.