반응형
코딩테스트 연습
기초부터 차근차근, 직접 코드를 작성해 보세요.
programmers.co.kr
기본 SELECT 문 연습 이후 점점 어려워지는 쿼리문제...

우측 상단에서 mysql과 oracle로 선택 가능

문제풀기 전

mysql로 문제풀었을 경우 앞에만 파란색 체크표시, oracle sql로 문제풀었을 경우 우측만 파란체크표시
둘다 풀었을 경우 아래와 같이 표시

1. SELECT 완료

- 상위 n개 레코드 (문법 다름)
--mysql 1건 조회
SELECT NAME FROM ANIMAL_INS
ORDER BY DATETIME ASC
LIMIT 1
--오라클 1건 조회
SELECT * FROM
( SELECT NAME FROM ANIMAL_INS
ORDER BY DATETIME ASC )
WHERE ROWNUM =1
2. SUM, MAX, MIN 완료

3. GROUP BY 완료

- 동명 동물 수 찾기
* HAVING 절
- WHERE 절에서는 집계함수를 사용 할 수 없다.
- HAVING 절은 집계함수를 가지고 조건비교를 할 때 사용한다.
- HAVING절은 GROUP BY절과 함께 사용이 된다.
SELECT NAME, COUNT(NAME)
FROM ANIMAL_INS
WHERE NAME IS NOT NULL
GROUP BY NAME
HAVING COUNT(NAME) >= 2
ORDER BY NAME ASC
- 입양 시각 구하기_1 (문법 다름)
--mysql
SELECT HOUR(DATETIME) , COUNT(DATETIME)
FROM ANIMAL_OUTS
WHERE HOUR(DATETIME) between '9' AND '20'
GROUP BY HOUR(DATETIME)
ORDER BY HOUR(DATETIME) ASC
--오라클 SELECT TO_CHAR(DATETIME,'HH24') , COUNT(DATETIME)
FROM ANIMAL_OUTS
WHERE TO_CHAR(DATETIME,'HH24') between '09' AND '20'
GROUP BY TO_CHAR(DATETIME,'HH24')
ORDER BY TO_CHAR(DATETIME,'HH24') ASC
- 입양 시각 구하기_2
...level4인만큼 정말 어려워서 공부하면서 풀었다는...눙물...
* [mysql] SET
- 쿼리에서 변수설정 하려면 SET 명령을 사용하며 변수 앞에는 @를 붙임
-- 변수 초기화
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
* [ORACLE] CONNECT BY LEVEL
- 계층형 질의 구문
- CONNECT BY LEVEL 은 연속된 숫자를 조회할 때 사용하며 오라클에서만 지원
- 1~ 10까지 연속된 숫자 조회
ex ) SELECT LEVEL AS NO FROM DUAL
CONNECT BY LEVEL <= 10
-- LEFT OUTER JOIN으로 A테이블 기준 조회하며, B.CNT가 NULL인 경우 0으로 출력
SELECT A.NUM, NVL(B.CNT,0)
FROM (
--1~23 조회
SELECT LEVEL-1 AS NUM FROM DUAL CONNECT BY LEVEL <=24
) A
LEFT OUTER JOIN
(
--각 시간대별 입양건수 조회
SELECT TO_CHAR(DATETIME, 'HH24') AS HOUR, COUNT(*) AS CNT
FROM ANIMAL_OUTS
GROUP BY TO_CHAR(DATETIME, 'HH24')
) B
ON A.NUM = B.HOUR
ORDER BY A.NUM
'SQL' 카테고리의 다른 글
[중급 SQL 문제풀이] HackerRank 문제 및 풀이(1) (0) | 2022.01.13 |
---|---|
[중급 SQL 문제풀이] leetcode 문제 및 풀이(1) (0) | 2022.01.10 |
[중급 SQL문제풀이]MySQL 숫자를 다루는 함수, 문자열을 다루는 함수 (0) | 2022.01.10 |
[SQLD] 2022 시험일정 및 시험범위 (0) | 2022.01.06 |
SQL 쿼리연습- IS NULL, JOIN(feat.프로그래머스, SQL고득점 KIT) (0) | 2022.01.06 |