오라클 sql문에 관한 질문입니다. 0 3 4,047

by 이태훈 [Oracle 기초] [2010.05.22 19:29:09]



제가 아무리 찾아봐도 너무 기본적이고 쉬운것이라서 답변을 못찾았다고 생각됩니다.
그러나 정말 아무래도 모르겠어서 질문합니다.

아래와 같은 sql문제를 풀고있었는데요.

이름, 입사일 및 업무 시작 요일을 표시하고 열 레이블을 DAY로 지정한다.
Monday를 시작으로 해서 요일을 기준으로 결과를 정렬하라.

마지막에 Monday를 시작으로 해서 요일을 기준으로 결과를 정렬하라는게 어떻게 해야하는지 모르겠습니다.

정답은

SELECT last_name, hire_date,
   TO_CHAR(hire_date, 'DAY') DAY
FROM employees
ORDER BY TO_CHAR(hire_date - 1, 'd');


위처럼 문자변환함수를 이용해서 정렬하는건데 저기서 왜 hire_date에서 -1을 하고 마지막에 'd'가 의미하는게 무엇인지 모르겠습니다.

너무 기본적인 질문을 드렸나요?? 오라클 시작한지 이제 막 2주째 접어들고있는데요
 너무너무 재밌고 매력있는 과목이라고 생각됩니다..

감사합니다.
by 기초부실이 [2010.05.23 13:51:10]
TO_CHAR(hire_date-1, 'd')에서 hire_date에서 -1을 하는 이유는 기본적으로 일요일이 1주의 시작이기 때문에 -1을 하면 월요일이 기준이 됩니다. 그리고 'd'는 1~7일 즉 1주를 나타내므로 한마디로 년도와 월이 상관없이 일주일 중에 월요일인것을 기준으로 정렬한다 라고 표현할수 있습니다. 설명을 잘못해서 이해가 가셨을련지..- _-;;

by 마농 [2010.05.23 21:06:31]
설명은 위에서 아주 잘 해주셨구요.
저는 다른걸 지적해드리고 싶네요.
잘 모를땐 그부분을 select 절에 넣고 조회해보세요.
입력값과 결과값을 비교해보시면서 스스로 터득하는것도 좋은 방법입니다.

by 이태훈 [2010.05.24 19:20:39]
아~~~ 이런거였군요. 기본적으로 일요일이 기준이었던거구나..
select절에 넣어보구 where절에 조건걸어서 한가지만 놓구 비교해봤더니 아주 잘 이해가 되었습니다. 저는 hire_date에 있는 data에서 -1이 되는줄알고 헷갈렸었는데... 정말 감사합니다. 꾸뻑!! ^^
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입