SQL15 [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가 예약어로 되어있다. [linux] 리눅스에 cubrid 설치(feat. cubrid 11.2 ver)지난주 리눅스 서버에 cubrid DBMS를 설치 했기에 메모한다. 설치할 때 캡처를 하지 못한 관계로 기억을 더듬어 프로세스 위주로 기록한다. 1. 리눅스 서버에 jdk를 설치/환경변.. 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. [dbeaver] dbeaver DDL, DML 생성 dbeaver를 이용해서 DDL, DML 추출 방법 IT/development 2023. 7. 8. 이전 1 2 다음