inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

필요할 때 찾아 쓰는 SQL 쿼리북, Part I

SQL 한 문장으로 임시테이블 만들고 SELECT 하기

fromdate, todate 구하는게 잘 이해가안되네요.

해결된 질문

503

scryid

작성한 질문수 15

0

fromdate, todate 구하는게 잘 이해가안되네요..

 

알고리즘을 자세히 설명해주실 순 없으신가요?

sql mariadb heidisql

답변 2

1

SQL뱅크

우선 아래의 쿼리를 수행하시어 좀 더 상세한 부분들의 결과값을 확인하십시오.

교안의 첫번째 쿼리를 세부적으로 분해한 내용입니다.

WITH RECURSIVE tmp AS (SELECT 1 AS id UNION ALL SELECT id+1 FROM tmp WHERE id<12)

SELECT

id,

CURRENT_DATE() current_day,

(id- 2)*7 days,

DAYOFWEEK(CURRENT_DATE())+ 6 fromdate_days,

DATE_SUB(CURRENT_DATE(),INTERVAL (id- 2)*7+DAYOFWEEK(CURRENT_DATE())+ 6 DAY) AS fromdate,

DAYOFWEEK(CURRENT_DATE())- 0 todate_days,

DATE_SUB(CURRENT_DATE(),INTERVAL (id- 2)*7+DAYOFWEEK(CURRENT_DATE())- 0 DAY) AS todate

FROM tmp

ORDER BY id;

image위에서 보면, "보라1번 - (주황1번 + 파랑1번)" 의 결과가 fromdate 입니다.(해당 주의 일요일)

또한, "보라1번 - (주황1번 + 초록1번)" 의 결과가 todate 입니다.(해당 주의 토요일)

더불어서 DAYOFWEEK(일자)의 결과값은 위에 기재한 바와 같이 일(1), 월(2),...,토(7)와 같이 정해진 정수값들을 출력합니다. 그에 따라 계산되어 만들어진 쿼리이며 이는 다양한 방식으로 수정하여 사용할 수 있습니다.

알고리즘이라면, id값이 순차적으로 변함에 따라 함께 변화하는 "(id- 2)*7" 값 등이 7씩 감소하는 것을 이용했다고 할 수 있습니다.

 

예를 들어, 유사 내부함수 WEEKDAY() 등을 통해 아래와 같이 "현재일을 기준으로 과거 요일들을 5주 전까지로 출력하기" 도 가능합니다. 사용하는 이에 따라 다양한 결과가 나올 수 있습니다. (WEEKDAY()는 출력 정수값이 다름)

SELECT

ADDDATE(CURDATE(), - WEEKDAY(CURDATE()) - 7*(id-1)+0) AS '월요일',

ADDDATE(CURDATE(), - WEEKDAY(CURDATE()) - 7*(id-1)+1) AS '화요일',

ADDDATE(CURDATE(), - WEEKDAY(CURDATE()) - 7*(id-1)+2) AS '수요일',

ADDDATE(CURDATE(), - WEEKDAY(CURDATE()) - 7*(id-1)+3) AS '목요일',

ADDDATE(CURDATE(), - WEEKDAY(CURDATE()) - 7*(id-1)+4) AS '금요일',

ADDDATE(CURDATE(), - WEEKDAY(CURDATE()) - 7*(id-1)+5) AS '토요일',

ADDDATE(CURDATE(), - WEEKDAY(CURDATE()) - 7*(id-1)+6) AS '일요일'

FROM urlcodemap

ORDER BY id LIMIT 5;

 

물론, DAYOFWEEK()의 경우 역시 다양하게 변형시켜 사용될 수 있습니다.

1

scryid

감사합니다

1

SQL뱅크

안녕하세요 scryid 님.

문의하신 질문이 관련된 강좌의 제목이 "SQL 한 문장으로..." 가 맞을까요? 해당 내용이 보이지 않아서요.

특정 강좌와 해당 부분을 말씀해 주시면 좋겠습니다.

1

scryid

스케줄을 위한 기간 리스트 가져오기입니다

간단한 오타 제보입니다.

0

2

0

큰 범위 조회 시 EXPLAIN의 rows 값이 정확하지 않은 이유가 궁금합니다.

0

15

1

실제 FK제약조건을 설정하지 않는이유

0

18

1

Free Edition 실습 영상은 아직 업데이트전인가요?

0

15

1

상품 정보 크롤링

0

23

2

강의에 적용한 스크립트를 받아 볼수 있을까요?

0

38

2

실습소실행안되요

0

33

1

수강기간 연장

0

25

1

BCNF 질문

0

46

2

연관 엔티티 네이밍 규칙

0

39

1

ORA-01017 오류 때문에 진도가 못나가고있습니다.!

0

35

2

히스토리 관련 질문

0

55

2

SSMS 설치 오류

0

48

1

제공된 홈페이지 로그인 ,출력값, 건의사항 오류

1

44

1

최신 하드웨어에서 SQL Express 설치에러 해결법

0

56

1

자료가 남지않은 프로젝트는 어떻게 적어야 할까요?

0

38

2

진짜 강의 듣는거 너무 고문

0

108

1

vs code

0

45

2

맥북용 자료 부탁드립니다.

0

34

2

로그인이 안되네요

0

31

1

수업자료 다운

0

43

2

최종 과제 제출

0

81

3

교재 p.31 실행순서 오류?

0

104

2

urlcodemap.sql 파일 다운 받는곳이 없어요

1

224

1