전체 글(193)
-
현재 일자가 속한 분기 구하는 쿼리
2022년 2023년 12월 1 월 2 월 3 월 4 월 5 월 6 월 7 월 8 월 9 월 10 월 11 월 1분기 2분기 3분기 4분기 지난해 12월을 시작으로 3개월씩 분기를 나누었을 때 특정일자를 기준으로 현재 출력할 수 있는 분기수가 몇 개인지 구하려면 어떻게 해야 할까? 가령 현재 일자가 2023년 11월 29일일 때의 분기를 구하면 4분기가 아니고 3분기가 되어야 한다. 왜냐하면 11월 말일이 30일인데 아직 말일이 안지났기 때문에 분기별 데이터가 계속 쌓일 수 있어서 바로 전 분기인 3분기가 되어야 한다. /* 날짜 판별을 위한 분기 기준 데이터 생성 - agoYr : 지난 해 - basYr : 기준년도 */ SELECT #{agoYr} || '1201' AS FRST_DT, TO_CHAR..
2023.12.02 -
SQLite3 - DB 생성하기
쿼리연습하는데 기왕이면 Oracle 이면 좋겠으나 Docker 로 배포되는 오라클도 있고 MySQL, Maria DB, ... 다양한 오픈소스 DB 가 존재하는데 설치하기도 귀찮고 SQLite 가 최소한의 기능을 지원하니까 만사가 귀찮은 사람에겐 SQLite 를 쓰는 것도 대안이 되리라! 이야~ 단순하다. $ sqlite3 데이터베이스명 DBeaver 에서 조인연습하려고 구한 Chinook.db 가 있지만 Employee 테이블명이 겹쳐서 새 DB는 어떻게 만들어야 하는지 궁금했는데 커맨드 한 개로 바로 해결된다. 쉬워서 좋네. 나중에 안드로이드 앱 개발할 때 써먹으면 되니까. 참고한 사이트 : SQLite In 5 Minutes Or Less Below is a simple TCL program tha..
2023.11.21 -
[SQL] - ORDER BY
ORDER BY 로 쿼리결과를 정렬하려고 할 때, 컬럼값에 따라 우선순위를 정해야 할 경우, CASE 문을 쓰면 된다. SELECT SUBJECT, ... FROM ( SELECT '컴공' AS SUBJECT, ... union SELECT '소프트웨어공' AS SUBJECT, ... union SELECT '전자공' AS SUBJECT, ... ) A ORDER BY CASE WHEN A.SUBJECT = '컴공' THEN 1 WHEN A.SUBJECT = '소프트웨어공' THEN 2 WHEN A.SUBJECT = '전자공' THEN 3 END ASC
2023.11.20 -
[JQuery] selector 한꺼번에 지정하기
여러 개의 HTML 요소에 대해 동일한 이벤트를 처리하려고 할 때 이렇게 쓰면 된다. $('selector1, selecotr2, selectorN').on('이벤트', function(arg){}); --- $('#id-one').on('이벤트', function(arg){}); $('#id-two').on('이벤트', function(arg){}); $('#id-three').on('이벤트', function(arg){}); --- // 소스 코드량도 줄이고 $('#id-one, #id-two, #id-three').on('이벤트', function(arg){});
2023.11.20 -
JS 에서 소수점 반올림 처리하기
SQL 에서는 ROUND(소수값, 유지할 자릿수) 만으로 소숫점 몇 째자리까지 유지할 수 있다. [ SQLITE 기준 ] SELECT ROUND(12345.67890) AS ROUNDING; -> 12345 SELECT ROUND(12345.67890, 2) AS SOSU; -> 12345.68 하지만 자바스크립트에서는 ROUND 함수로 소수점 자리유지를 할 수 없다. 항상 반올림된 정수로 된 결과로 나온다. Math.round(12345.67890) -> 12346 Math.round(12345.67890, 2) -> 12346 소수점 자리를 유지하려면 Math.round(소수값 * 10^N) / 10^N 으로 처리하면 된다. 소수점 둘째 자리이면 10의 제곱인 100 을 쓰면 된다. Math.roun..
2023.11.20 -
그리드 - Tabulator 엑셀 형식으로 다운로드하기
Tabulator 에서 현재 그리드의 데이터를 XLSX 형식으로 다운로드하는 API 는 다음과 같다. let tableObj = new Tabulator(...); function downloadXLS() { tableObj.download("xlsx", "파일명.xlsx"); } 기본 설정에서 Tabulator 에서는 통데이터를 그대로 출력해버리기 때문에 레코드가 1000 개를 넘어가면 다운로드 시간도 지연되며 더욱이 그많은 데이터를 다 받아야 하나 싶을 정도로 부담스러워진다. 다행히 이것을 해결하는 방법 중의 하나로 범위를 지정해서 다운로드할 수 있다. 현재 검색으로 찾아낸 방법인데 현재 선택된 행만 다운로드하는 것이다. 그런데 여기서 또 한 가지 문제점이 존재한다. selected 를 써서 현재 선..
2023.11.03