postgresql에서 with 절은 임시 결과를 정의할 때 유용하였습니다. 이걸 여러 개를 쓸 수 있을까요? 2023년 6월 1일부터 오늘까지 통계치를 뽑고 싶을 때 유용하게 쓰일 법한 예제를 보면서 간단하게 알아보겠습니다. 테이블 d에는 id, s, created 필드가 있습니다. s와 created는 각각 내용과 생성된 날을 의미합니다. 어떤 레코드들이 있는지 보기 위해, select * from d; 를 입력해 보았습니다. 그랬더니 요래 나오는군요. created의 맨 마지막 부분에 +0900이 되어 있는 것으로 보아, 서울 시간으로 되어 있는 것이 분명하군요. 이제 저는 날짜별로 몇 개의 레코드가 생성되었는지 집계하고 싶습니다. 어떻게 하면 될까요? 날짜별로 집계 하려면 group by 날짜를 ..
with 검색 결과
프로그래머스나 해커랭크에서 sql 문제를 풀다 보면 with 문을 쓰면 더 간결해 지겠구나. 라는 생각이 들 때가 있어요. 이 with절이 그냥 단순하게 실행 결과를 임시로 저장해 두고 쓴다. 정도로만 알고 있었어요. 그런데, recursive하게 써 먹을 수도 있었어요. 꽤 오랜 시간 헤멘 끝에 문서를 보고 약간이나마 이해를 할 수 있게 되었는데요. 이래서 영어 공부가 필요한가 봅니다. 예제 문제를 보면서 같이 쿼리를 작성해 봅시다. 먼저, test 테이블에는 id와 par가 저장되어 있어요. par가 -1인 경우에는 부모가 없다는 뜻이고요. par가 -1이 아닌 0보다 큰 정수라면, 부모가 있다는 뜻입니다. 예를 들어, id가 6인 노드의 부모는 4임을 의미합니다. 이 데이터는 포레스트 형식을 만족해..
sql에서 with 절은 해당 쿼리 내에서 임시 결과를 정의하고 쓸 때 유용하게 사용됩니다. sql 코딩 테스트에서 꽤 어려운 문제가 나왔을 때, 잘 써먹으면 유용하지 않을까 싶어요. 사용 방법 보다는 문제 상황을 하나 정의하는 게 좋을 듯 싶네요. 그러면서 이해를 해 보도록 하겠습니다. 먼저 salaries를 보겠습니다. 이 테이블에는 1년마다 계약을 할 때 각 일꾼들의 연봉을 나타냅니다. 테이블을 조회해 보겠습니다. 그러면, 10001번 일꾼에 대해서, 각각 60117, 62102, 66074, ... 등의 근로 계약을 했음을 볼 수 있어요. 연봉 하니까 무슨 생각이 드나요? 해당 테이블에 근로자가 n년간 계약한 데이터가 있다고 해 봅시다. 그러면, 회사에 다니는 동안의 평균 연봉도 있을 겁니다. 이..
최근댓글