SQL 코딩테스트 복기 -시간 데이터 다루기, 조건에 맞는 값 추출-
1. datetime에서 일부 시간만 가져오기
datetime 데이터에서 시간만 필요한 경우가 있었다..
hour(), minute(), second() 써봤는데 진짜로 되네??
[MySQL] 날짜 데이터에서 일부만 추출하기 :: 확장형 뇌 저장소 (tistory.com)
DATE_FORMAT() 함수로 시간만 뽑아낼 수 있을듯
DATE_FORMAT(DATETIME, '%H:%i:%S') 이런식으로?
혹은 DATEDIFF나 TIMESTAMPDIFF로 시간차이도 구한다는데
[MySQL] DATETIME 가공하기 (tistory.com)
2. 조건에 맞는 값 추출하기
만약 테이블이 다음과 같다고 해보자
id | a | b | c |
1 | 2 | 3 | 0 |
2 | 4 | 5 | 1 |
3 | 6 | 2 | 2 |
새로운 변수 d = a/b로 정의하는데, 만약 c가 0인 행의 d값보다 작은 행을 추출하라고 하면 어떻게 해야할까
select id, a/b, c from table
where c = 0;
으로 c가 0인 행을 추출하자
이렇게 만든 테이블과 원래 테이블을 innerjoin해서 c=0인 행의 a/b값을 새로운 변수로 추가시킨다
select * from table A, (select a/b from table where c= 0) B;
이렇게 하면
id | a | b | c | a/b |
1 | 2 | 3 | 0 | 0.666 |
2 | 4 | 5 | 1 | 0.666 |
3 | 6 | 2 | 2 | 0.666 |
이러면, a/b라는 변수가 있으니까...
select id, a/b from table A, (select a/b as d from table where c=0) B
where a/b < d;
이런 느낌으로 하면 c=0인 행의 a/b보다 작은 a/b를 가진 행들을 추출할 수 있을거
결국 중요한게 적절한 행을 추출한 table을 이용한 subquery를 잘 쓰는게 확실히 중요하긴 해
'프로그래밍 > SQL' 카테고리의 다른 글
SQL 코딩테스트 복기 - 알파벳으로 시작하는 데이터 추출하는 방법(정규표현식) (1) | 2023.03.18 |
---|---|
MYSQL에서 스키마(데이터베이스) 생성하기 (0) | 2023.01.19 |
SQL 코딩테스트 복기 - 무조건 나오는 RANK함수 무조건 외우기 (0) | 2022.05.16 |
SQL문 분석(코딩테스트 복기)하고 스킬 습득하기 (0) | 2022.04.22 |
코딩테스트를 위한 SQL 간단 벼락치기 (0) | 2021.11.28 |