요즘 구루비(gurubee.net)에서 쉬운 질문 위주로 SQL작성 연습을 해보고 있습니다. 생각보다 다양한 DBMS에 대한 질문이 꾸준히 올라오고 있어서 많은 공부가 되네요. 연속된 일자를 그룹으로 표시하는 내용인데 참고가 될 만한 내용이라 정리해보았습니다. 먼저 그룹을 만들고자 하는 테이블의 형태는 아래와 같습니다. KEY DATE 99769 2020-09-02 99769 2020-09-03 99769 2020-09-04 99769 2020-09-05 99769 2020-09-10 99769 2020-09-11 99769 2020-09-14 99769 2020-09-15 99769 2020-09-16 99769 2020-09-17 99769 2020-09-18 99769 2020-09-19 99769..
안녕하세요. ProDBA에서 MariaDB에서 ODBC를 사용해서 다른 데이터베이스를 참조할 수 있는 기능이 있다고해서 테스트해봤습니다. 제가 테스트한 환경은 CentOS 6.10와 MariaDB 10.2.32 입니다. 우선 MariaDB는 설치되어 있다고 가정하겠습니다. CONNECT Engine을 설치하는 방법은 아래 블로그를 참고했습니다. cirius.tistory.com/1609 CONNECT Engine을 설치하는 과정은 위의 블로그에 잘 소개되어 있어서 저의 시행착오를 공유하고자 합니다. 1. isql에서 'Can't open lib 'libsqora.so.11.1' : file not found' 메시지가 발생하는 경우 [root@db1 client64]# isql -v myora [0100..
안녕하세요. ProDBA의 질문으로 SQL 연습을 해봤습니다. 아래는 샘플 데이터입니다. 요구사항은 먼저 1,2,5 번째 컬럼을 기준으로 채번을 하는 것입니다. (RANK) 그 후에 8번째 컬럼에서 30을 초과하는 값을 경계로 하여 순위를 매깁니다. (IDEN_NUM) 샘플 데이터가 그림이라 타이핑하는데 약간 애를 먹었습니다. 대충 일부 데이터만 가지고 테스트를 해봤습니다. WITH t AS ( SELECT '20160519' ONE, 765 TWO, 127.294 THREE, 36.581 FOUR, 912 FIVE, 940 SIX, 50 SEVEN, 29 EIGHT, 36110250 EMD_CD, 'Jochiwon-eup' EMD_ENG_NM, 36 CTYPRVN_CD, 'Sejong-si' CTP_E..
안녕하세요. 데이터베이스 사랑넷에 두 날짜사이에서 주말을 제외한 일수를 구하는 방법에 대한 질문이 있어서 이것 저것 찾아보고 시험해봤습니다. 기능에 대해서 잘 모르다보니 working day sql postgresql 키워드로 구글에 검색해보니 비슷한 기능을 구현한 예제가 많이 있었습니다. 먼저 질문 내용입니다. 아래 쿼리는 mysql에서 두 날짜사이 주말일수를 제외한 일수를 구하는 sql문인데 PostgreSQl에서 적용되게 변환하고 싶습니다. 부탁드립니다. select ABS(DATEDIFF('2020-04-23', '2020-04-26')) + 1 - ABS(DATEDIFF(ADDDATE('2020-04-23', INTERVAL 1 - DAYOFWEEK('2020-04-23') DAY), ADDDA..
안녕하세요. 요즘 IBM 커뮤니티에서 열심히 댓글놀이를 하고 있는데요. 며칠전에 Informix에서 문자열에 대한 최빈값(MODE)을 구하는 방법에 대한 질문글이 올라왔습니다. 최빈값은 통계학에서 쓰는 용어로 액셀이나 분석 솔루션에서 MODE라는 함수로 사용되기도 합니다. 아래는 위키백과의 최빈값에 대한 설명입니다. 최빈값(最頻-), 모드(mode)는 통계학 용어로, 가장 많이 관측되는 수, 즉 주어진 값 중에서 가장 자주 나오는 값이다. 예를 들어, {1, 3, 6, 6, 6, 7, 7, 12, 12, 17}의 최빈값은 6이다. 최빈값은 산술 평균과 달리 유일한 값이 아닐 수도 있다. 또한 주어진 자료나 관측치의 값이 모두 다른 경우에는 존재하지 않는다. 주어진 자료에서 평균이나 중앙값을 구하기 어려운..
아래 글에 이어서 Partitioned Outer Join에 대해서 소개해드리겠습니다. 이게 알고보니 Oracle 10g부터 소개된 기능인데 저는 이제서야 알았네요. 예제는 모든 고객의 매일 주문 수를 계산하는 SQL입니다. 매일 주문 수를 계산하는데, 주문이 없는 날은 0으로 표시해야하니 LEFT JOIN이 필요할 것 같습니다. 그러려면 LEFT JOIN과 UNION ALL을 조합해서 사용해야 하는데 실제로도 그런 경우를 많이 보았습니다. OVER PARTITION BY 절은 몇번 사용해보았습니다만 조인절에 PARTITION BY 절을 사용하니 생소하네요. 아래는 기준이 되는 고객번호를 가지고 PARTITION BY절을 사용한 예제입니다. with calendar_dates as ( select dat..
안녕하세요. 오라클 페이스북 게시물에서 재미있는 예제가 있어서 소개드리려고 합니다. 보통 TO_DATE 함수를 사용해서 문자열을 DATE나 TIMESTAMP 형식으로 변환할텐데요. 이번에 DATE 리터럴이라는 방식을 알게됐습니다. 아래는 간단한 예제입니다. SQL> select DATE '2018-12-31' from dual; DATE'2018 --------- 31-DEC-18 위와 같이 date 키워드에 이어서 날짜형식의 문자열을 입력하면 DATE 형식의 데이터가 출력됩니다. TIMESTAMP도 DATE와 유사하게 사용할 수 있습니다. INTERVAL도 가능하네요. SQL> select TIMESTAMP '1999-10-29 01:30:00 US/Pacific PDT' from dual; TIMES..
문자열에서 특수문자를 제거하는 방법을 찾아보았습니다. 엔터나 탭같은 보이지 않는 문자는 'nonprintable character'라고 부르기도 하는데요. 인포믹스에서는 이런 문자열을 확인하려면 데이터를 파일로 내려받습니다. > insert into test values ('a'||chr(10)||'bcd'||chr(9)||'efg'); 1 row(s) inserted. > select * from test; a a bcd efg $ echo "unload to test select * from test" | dbaccess -X kr_iis Database selected. 1 row(s) unloaded. Database closed $ cat test a\0abcd\09efg| dbaccess 유틸..
- Total
- Today
- Yesterday