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 |
31 |
Tags
- 데이터필드
- programmers
- 쿼리문법
- select
- 완주하지 못한 선수
- embeddedSW
- 알고리즘 자동 업로드
- bandpass filter
- Django웹개발
- 알고리즘풀이
- Django cycle
- 코딩테스트
- matlab 디지털신호처리
- Django
- SQL
- MTV패턴
- Django웹서버개발
- 통신인터페이스
- 링크필드
- 프로그래머스
- sql정리
- N으로 표현
- Django서버
- Django DB
- 디지털신호처리설계
- 왜 개발이 하고싶은가
- 자동 commit
- 설문조사앱
- python웹개발
- 웹개발
Archives
- Today
- Total
카이로스의 시간
Database SQL 쿼리 문법 정리 Part2 본문
알고리즘 테스트를 위한 SQL 문법을 정리합니다.
Programmers의 SQL 고득점 Kit 테스트에 있는 문제의 풀이 위주로 작성했습니다.
아래 링크에서 이어지는 내용입니다.
https://94chan0.tistory.com/15
Database SQL 쿼리 문법 정리 Part1
알고리즘 테스트를 위한 SQL 문법을 정리합니다. Programmers의 SQL 고득점 Kit 테스트에 있는 문제의 풀이 위주로 작성했습니다. 이 프로그래머스 SQL 문제들은 SELECT를 통해서 데이터를 조회하는 방식
94chan0.tistory.com
JOIN
- INS, OUTS의 ID를 기준으로 두군데 다 있는 항목 + OUTS에 있는 항목들 중에서 OUTS.ANIMAL_ID는 있고 ANIMAL_INS.ANIMAL_ID에는 없는 경우의 OUTS.ANIMAL_ID, OUTS.NAME을 조회
SELECT OUTS.ANIMAL_ID, OUTS.NAME FROM ANIMAL_INS AS INS
RIGHT OUTER JOIN ANIMAL_OUTS AS OUTS
ON INS.ANIMAL_ID = OUTS.ANIMAL_ID
WHERE OUTS.ANIMAL_ID NOT IN(SELECT ANIMAL_INS.ANIMAL_ID FROM ANIMAL_INS)
- INS, OUTS의 ID가 일치하는 데이터들 기준으로 INS.DATETIME이 OUTS.DATETIME 보다 큰 경우를 INS.DATETIME 기준으로 정렬해서 조회
SELECT OUTS.ANIMAL_ID, OUTS.NAME FROM ANIMAL_INS AS INS
RIGHT OUTER JOIN ANIMAL_OUTS AS OUTS
ON INS.ANIMAL_ID = OUTS.ANIMAL_ID
WHERE INS.DATETIME > OUTS.DATETIME
ORDER BY INS.DATETIME
- INS의 ID 기준으로 MERGE 해서 OUTS.DATETIME이 NULL인 경우, INS.DATETIME 으로 정렬해서 상위 3개만 조회
SELECT INS.NAME, INS.DATETIME FROM ANIMAL_INS AS INS
LEFT OUTER JOIN ANIMAL_OUTS AS OUTS
ON INS.ANIMAL_ID = OUTS.ANIMAL_ID
WHERE OUTS.DATETIME IS NULL
ORDER BY INS.DATETIME LIMIT 3
- INS.SEX_UPON_INTAKE에는 Intact라는 문구가 포함되어있고, OUTS.SEX_UPON_OUTCOME에는 Intact가 안포함되어있는 경우
SELECT OUTS.ANIMAL_ID, OUTS.ANIMAL_TYPE, OUTS.NAME FROM ANIMAL_OUTS AS OUTS
LEFT OUTER JOIN ANIMAL_INS AS INS
ON INS.ANIMAL_ID = OUTS.ANIMAL_ID
WHERE INS.SEX_UPON_INTAKE LIKE '%Intact%'
AND OUTS.SEX_UPON_OUTCOME NOT LIKE '%Intact%'
ORDER BY OUTS.ANIMAL_ID
STRING, DATA
- ANIMAL_INS에서 NAME에 ('Lucy','Ella','Pickle','Rogan','Sabrina','Mitty')이 있는 row만 찾아서 컬럼 조회
SELECT ANIMAL_ID, NAME, SEX_UPON_INTAKE FROM ANIMAL_INS AS INS
WHERE NAME IN ('Lucy','Ella','Pickle','Rogan','Sabrina','Mitty')
- 이름에 el이 들어가는 ANIMAL_TYPE이 Dog인 것들만 NAME을 기준으로 정렬
SELECT ANIMAL_ID, NAME FROM ANIMAL_INS AS INS
WHERE NAME LIKE "%el%" AND ANIMAL_TYPE="Dog"
ORDER BY NAME ASC
- SEX_UPON_INTAKE에 Neutered나 Spayed가 들어가있으면 O 아니면 X로 표시해서 중성화 목록으로 이름 바꿔서 조회
SELECT ANIMAL_ID, NAME,
IF(SEX_UPON_INTAKE LIKE "%Neutered%" OR SEX_UPON_INTAKE LIKE "%Spayed%", 'O', 'X') AS "중성화"
FROM ANIMAL_INS AS INS
ORDER BY ANIMAL_ID
- INS에 ANIMAL_ID가 OUTS에도 있고, 날짜 차이로 정렬해서 가장 크게 차이나는 2개 기준으로 ID, NAME 조회
SELECT INS.ANIMAL_ID, INS.NAME FROM ANIMAL_INS AS INS, ANIMAL_OUTS AS OUTS
WHERE INS.ANIMAL_ID=OUTS.ANIMAL_ID
ORDER BY DATEDIFF(INS.DATETIME, OUTS.DATETIME)
LIMIT 2
- ANIMAL_INS에서 DATETIME을 DATE로 type변환, 이때 %Y: 4자리 연도, %y: 2자리 연도, %m(월), %d(일)를 나타냄. 이외에는 %H(24시간), %h(12시간), %i, %s 등이 있습니다.
SELECT ANIMAL_ID, NAME, DATE_FORMAT(DATETIME, '%Y-%m-%d') AS "날짜"
FROM ANIMAL_INS AS INS
ORDER BY ANIMAL_ID
'기타' 카테고리의 다른 글
로또 번호 자동 생성기 (0) | 2023.09.11 |
---|---|
Database SQL 쿼리 문법 정리 Part1 (0) | 2022.04.04 |
GCP로 git commit, push 자동 시스템 구축 (0) | 2022.03.29 |
[디지털 신호처리 설계] dtmf (2) | 2017.12.10 |
텐서플로우(tensorflow) 설치 (0) | 2017.09.14 |