<프로그래머스 - SQL 고득점 Kit>
- Oracle
* SUM,MAX,MIN
1.
- 최대값 : MAX, 서브쿼리 이용
2.
- 최소값 : MIN, 서브쿼리 이용
3.
- 전체 행 개수 : count() 사용
* count(ANIMAL_ID)와 count(*) 차이
- ANIMAL_ID가 NULL 인 값을 제외하고 센다.
- *은 NULL 포함해서 센다 !
4.
- NULL 제거 : COUNT(컬럼명) 은 NULL을 포함하지 않는다.
- 중복 제거 : DISTINCT 컬럼명
* IS NULL
1.
- 정렬 : ORDER BY
- IS NULL 이용
2.
- 정렬 : ORDER BY
- IS NOT NULL 이용
3.
* NULL 치환함수
- NVL(컬럼,'치환할 값') : NULL 이면 치환할 값으로 바꿈!
- NVL2(컬럼,'0','1') : NULL이 아닐 경우 0, NULL일 경우 1
* GROUP BY
1.
처음,, 2단계문젠데 괜히쫄았어,, 후
2.
- GROUP BY를 이용하게 되면 조건은 WHERE이 아닌 HAVING을 써야한다.
* 이름이 없는 동물은 집계에서 제외하며 ,,, 이부분을 놓쳤다.
문제에서 '이때 ~~~' 이부분을 유심히 볼것 ****
자꾸 정렬도 놓친다... 결과는 이름순으로 조회해주세요..
3.
- GROUP BY를 이용하게 되면 조건은 WHERE이 아닌 HAVING을 써야한다.
* 시간 가져오기
- 24시간제 : SELECT TO_CHAR(SYSDATE, 'HH24') SYS_HOUR24 FROM DUAL
- 12시간제 : SELECT TO_CHAR(SYSDATE,'HH12') SYS_HOUR12 FROM DUAL
- 분 : SELECT TO_CHAR(SYSDATE, 'MI') SYS_MINUTE FROM DUAL
->MI는,, MINUTE
- 초 : SELECT TO_CHAR(SYSDATE, 'SS') SYS_SECOND FROM DUAL
- 년
: SELECT TO_CHAR(SYSDATE, 'YYYY') SYS_YEAR4 FROM DUALYEAR -> 4자리
: SELECT TO_CHAR(SYSDATE, 'YY') SYS_YEAR2 FROM DUAL -> 2자리
- 월 : SELECT TO_CHAR(SYSDATE, 'MM') SYS_MONTH FROM DUAL
- 일 : SELECT TO_CHAR(SYSDATE, 'DD') SYS_DATE FROM DUAL
요런식으로 쓰면 된다
4.
갑자기 뭐지 싶었다. 알고보니 레벨 4였음,,
여태 1,2 였잖아요,,!
계층형 쿼리를 통해서 0~23의 값을 가지고 있는 HOUR 컬럼을 가지고 있는 테이블을 만든다.
그리고 LEFT JOIN을 통해 만들어준 테이블에 ANIMAL_OUTS 붙인다.
그래야 0~23에 붙겠쥬? ~
그래서 ON에 HOUR로 해주는데, 이때 DATETIME에서 시간 추출해주며 설정한다
그롬 끝
'모각코 > 2022_슈붕팥붕' 카테고리의 다른 글
3회차(01.11) - 결과 (0) | 2022.01.11 |
---|---|
3회차(01.11) - 목표 (0) | 2022.01.11 |
2회차(01.06) - 목표 (0) | 2022.01.06 |
1회차(01.04) - 결과 (0) | 2022.01.04 |
1회차(01.04) - 목표 (0) | 2022.01.04 |