SQL16 [MSQL] ROWNUM 역순으로 계산하는 SQL 기법 목차샘플 쿼리WITH TB1 AS ( SELECT 1 AS SEQ, 'user' AS SEARCH_TYPE, '홍길동' AS SEARCH_NM, '2025-01-01 12:00:00' AS CREATED_AT UNION ALL SELECT 2 AS SEQ, 'bussiness' AS SEARCH_TYPE, 'ABC Corp' AS SEARCH_NM, '2025-01-02 14:00:00' AS CREATED_AT UNION ALL SELECT 3 AS SEQ, 'user' AS SEARCH_TYPE, '이순신' AS SEARCH_NM, '2025-01-01 09:00:00' AS CREATED_AT),TB2 AS ( SELECT 1 AS MEMB_ID, '홍길동' AS N.. IT/DataBase 2025. 1. 19. [SQL] 백분율 예제 목차 SELECT 5 / 30 * 100 FROM dual ; 1. 백분율 계산식 구하려는 컬럼을 전체 컬럼개수로 나눈 뒤 100을 곱한다. 실전 SQL(cubrid 사용) SELECT CASE WHEN A.HOUSE_TY_SECD = '1' THEN '다가구' WHEN A.HOUSE_TY_SECD = '2' THEN '빌라' WHEN A.HOUSE_TY_SECD = '3' THEN '아파트' WHEN A.HOUSE_TY_SECD = '4' THEN '오피스텔' WHEN A.HOUSE_TY_SECD = '5' THEN '단독' WHEN A.HOUSE_TY_SECD = '6' THEN '다세대' WHEN A.HOUSE_TY_SECD = '7' THEN '연립' WHEN A.HOUSE_TY_SECD = '8.. IT/DataBase 2024. 3. 20. [mybatis] mybatis data binding (feat. vo) 최근에 알게된 사실인데 mybatis 사용 시 select하는 컬럼명과 vo 필드가 서로 카멜케이스, 스네이크케이스로 일치할 경우 자동으로 vo에 바인딩 하기 때문에 as를 따로 주지않아도 된다.--예시 쿼리SELECT USER_NAME FROM users--예시 VO@Datapublic class User { //이렇게 컬럼명의 카멜케이스로 된 경우는 자동 바인딩됨 private String userName; }이걸 몰라서 그동안 아래처럼 컬럼마다 전부 AS를 달았었다..이제부터 생략해야지SELECT user_name as userName , user_id as userId , user_email as userEmail --.... FROM USERS 혹 컬럼명과 vo.. IT/development 2024. 3. 17. [mybatis] 동적 쿼리 집계 쿼리 예시 조회구분에 따라 년 또는 월로 그룹핑해서 집계를 구하는 예시 SELECT DATE_FORMAT(FRST_REG_DT, '%Y') || '년' AS searchMon/*년*/ DATE_FORMAT(FRST_REG_DT, '%M') AS searchMon/* 월 */ DATE_FORMAT(FRST_REG_DT, '%M') AS searchMon/* 월 */ , COUNT(code) AS searchTotalCnt , COUNT(CASE WHEN code = '10' THEN 1 END) AS searchPassedCnt , COUNT(CASE WHEN code = '20' THEN 1 END) AS searchRejectedCnt FROM TEST_BOARD TO_CHAR(FRST_REG_DT, 'YYYY-.. IT/development 2024. 2. 25. [mybatis] list foreach delete 목차 화면에서 체크박스에 체크된 데이터 중 회원번호를 담아서 서버로 전달, delete query에서 IN절로 처리 view function deleteData() { if (confirm("삭제 하시겠습니까?")) { //선택된 row 배열 var selectedRows = []; //table의 td제일 앞에 checkbox란 id를 가진 엘리먼트에서 회원번호 가져옴 $("input[id='checkbox']:checked").each(function () { var rowData = { 'num': $(this).closest('tr').find('#num').text(), //회원번호 } selectedRows.push(rowData); }); $.ajax({ url: '/info/delete.d.. IT/development 2024. 1. 21. [cubrid] 서브 쿼리 별칭 사용 시 주의점 cubrid 서브쿼리 별칭 사용 시 LIST는 예약어니까 사용하지 말자 아래 쿼리는 Oracle DBMS에서는 정상 동작하지만 cubrid에서는 syntax error가 발생한다. SELECT LIST.* FROM ( SELECT EMP_SNO , EMP_ID , EMP_EMAIL , EMP_HP FROM EMP_INFO_L ) LIST ; 삽질을 꽤나 했는데 큐브리드 공식문서 찾아보니 LIST가 예약어로 되어있다. 예약어 — CUBRID 8.4.4 documentation 예약어 아래는 CUBRID 키워드(keywords) 중 명령어, 함수명, 타입명 등으로 예약되어 있는 예약어(reserved words)를 정리한 표이다. 사용자는 테이블 이름, 칼럼 이름, 변수 이름과 같은 식별자(identifie.. IT/DataBase 2024. 1. 13. [mybatis] dynamic query template 나중에 내가 사용하기 위해 동적 쿼리 template을 기록한다. AND B.CODE IS NULL AND B.CODE IS NOT NULL AND C.CODE = 'A' AND C.CODE = 'D' AND C.CODE = 'P' AND B.CODE = #{entrprsSeCd} AND A.MBTLNUM LIKE '%' || #{mbtlnum} || '%' AND A.MBER_NM LIKE '%' || #{mberNm} || '%' 위 동적쿼리는 이렇게 작동한다. 를 통해 넘어온 parameter의 조건 일치여부에 따라 AND절을 동적으로 추가 또는 생성 예를 들면 다음과 같다. 1. mberGubun값만 'GNR'인 경우(일반회원만) //SELECT 절 생략 WHERE B.CODE IS NULL(원래.. IT/development 2023. 12. 24. [DBMS] N:M(다대다) 관계일 때 매핑 테이블로 관계 형성 하나의 메뉴는 여러개의 유저그룹과 연결될 수 있고 하나의 유저그룹도 여러개의 메뉴정보와 연결될 수 있기에 다대다 관계라고 할 수 있다.(회원과 유저그룹도 마찬가지다) 예를 들어 회원관리라는 메뉴를 A그룹도 가질 수 있고 B그룹도 가질 수 있다. A그룹은 회원관리 뿐 아니라 시스템관리의 메뉴와도 연결될 수 있다. 관계형 데이터베이스에서는 다대다 관계를 풀어내기 위해 중간에 매핑 테이블을 둬서 1:N, N:1로 관계를 품 매핑 테이블은 연결시키는 테이들의 PK만을 가지고 있고 이를 가지고 각 테이블에서 서로 참조할 수 있다. 위의 관계에서 회원이 자신과 연결된 메뉴정보를 알고 싶으면 아래처럼 쿼리를 작성하면 된다. /* 사용자와 매핑된 메뉴 조회 */ WITH UserGroupCodes AS ( /* 유저그.. IT/DataBase 2023. 9. 24. [Oracle] ORDER BY 시 조건 처리 회원 테이블 정렬 시 아래처럼 조건으로 순위를 부여할 수 있음(다양하게 응용 가능) /* 사용자 아이디가 'l'로 시작하는 데이터를 우선순위로 한 다음 이름 오름차순 정렬 */ SELECT ROW_NUMBER() OVER( ORDER BY CASE WHEN USER_ID LIKE 'l%' THEN 1 ELSE 2 END , A.USER_NAME ) AS rn , A.USER_ID , A.USER_NAME , A.USER_EMAIL FROM USER_INFO A ; IT/DataBase 2023. 9. 24. [Oracle] 가장 마지막 row 조회(feat. partition by) 1:N의 관계에서 N쪽의 데이터가 여러 row가 있을 경우 가장 마지막 row만 조회 SELECT EMP_ID /* 아이디 */ , EMP_POSITION_CD /* 직급코드 */ , EMP_ROLE_CD /* 직책코드 */ FROM ( SELECT EMP_ID , EMP_POSITION_CD , EMP_ROLE_CD , ROW_NUMBER() OVER(PARTITION BY EMP_ID ORDER BY H_SNO DESC) AS RowIdx FROM EMP_INFO_HISTORY ) WHERE RowIdx = 1 IT/DataBase 2023. 8. 7. 이전 1 2 다음