
▶ MySQL SELECT A.CATEGORY ,SUM(B.SALES) AS TOTAL_SALES FROM BOOK A INNER JOIN BOOK_SALES B ON A.BOOK_ID = B.BOOK_ID WHERE DATE_FORMAT(B.SALES_DATE,'%Y-%m') = '2022-01' GROUP BY A.CATEGORY ORDER BY A.CATEGORY ▶Oracel SELECT A.CATEGORY ,SUM(B.SALES) AS TOTAL_SALES FROM BOOK A INNER JOIN BOOK_SALES B ON A.BOOK_ID = B.BOOK_ID WHERE TO_CHAR(B.SALES_DATE,'YYYYMM') = '202201' GROUP BY A.CATEGORY ORDER ..

▶ MySQL SELECT (PRICE - PRICE % 10000) AS PRICE_GROUP ,COUNT(*) AS PRODUCTS FROM PRODUCT GROUP BY (PRICE - PRICE % 10000) ORDER BY PRICE_GROUP ▶Oracle SELECT TRUNC(PRICE,-4) AS PRICE_GROUP ,COUNT(*) AS PRODUCTS FROM PRODUCT GROUP BY TRUNC(PRICE,-4) ORDER BY PRICE_GROUP

▶ MySQL SELECT DATE_FORMAT(DATETIME,'%H') AS HOUR ,COUNT(*) AS COUNT FROM ANIMAL_OUTS WHERE DATE_FORMAT(DATETIME,'%H') >= 9 AND DATE_FORMAT(DATETIME,'%H') < 20 GROUP BY DATE_FORMAT(DATETIME,'%H') ORDER BY HOUR ▶ Oracle SELECT TO_NUMBER(TO_CHAR(DATETIME,'HH24')) AS HOUR ,COUNT(*) AS COUNT FROM ANIMAL_OUTS WHERE TO_NUMBER(TO_CHAR(DATETIME,'HH24')) BETWEEN 9 AND 19 GROUP BY TO_CHAR(DATETIME,'HH24')..

▶ MySQL / Oracle SELECT ANIMAL_TYPE ,COUNT(ANIMAL_TYPE) AS COUNT FROM ANIMAL_INS GROUP BY ANIMAL_TYPE ORDER BY ANIMAL_TYPE ▶LEAST 함수 활용(Oracle) SELECT ANIMAL_TYPE ,COUNT(ANIMAL_TYPE) AS COUNT FROM ANIMAL_INS GROUP BY ANIMAL_TYPE ORDER BY LEAST(ANIMAL_TYPE)

▶Join 활용 SELECT U.USER_ID ,U.NICKNAME ,SUM(B.PRICE) AS TOTAL_SALES FROM USED_GOODS_BOARD B INNER JOIN USED_GOODS_USER U ON B.WRITER_ID = U.USER_ID WHERE B.STATUS = 'DONE' GROUP BY U.USER_ID,U.NICKNAME HAVING SUM(B.PRICE) >= 700000 ORDER BY TOTAL_SALES;

▶ Multiple-Row 활용 SELECT FOOD_TYPE ,REST_ID ,REST_NAME ,FAVORITES FROM REST_INFO WHERE (FAVORITES,FOOD_TYPE) IN (SELECT MAX(FAVORITES),FOOD_TYPE FROM REST_INFO GROUP BY FOOD_TYPE) ORDER BY FOOD_TYPE DESC; ▶Join 활용 SELECT A.FOOD_TYPE ,B.REST_ID ,B.REST_NAME ,A.FAVORITES FROM (SELECT FOOD_TYPE ,MAX(FAVORITES) AS FAVORITES FROM REST_INFO GROUP BY FOOD_TYPE) A INNER JOIN REST_INFO B ON A.FOOD_TYPE =..

WITH T1 AS ( SELECT TO_CHAR(ST+LEVEL,'D') AS HOLYDAY FROM -- 시작,종료기간 일자 (SELECT TO_DATE('20220201','YYYYMMDD') AS ST ,TO_DATE('20220425','YYYYMMDD') AS ED FROM DUAL) CONNECT BY LEVEL

ROWID 테이블에서 행의 위치를 지정하는 논리적인 주소값 DB 전체에서 중복되지 않는 유일한 값으로 테이블에 새로운 행이 삽입되면 테이블 내부에서 의사 컬럼 형태로 자동적으로 생성 테이블의 특정 레코드를 랜덤하게 접근하기 위해 주로 사용 데이터 객체번호는 테이블이나 인덱스와 같은 데이터 객체가 생성될 때 할당 상대적인 파일번호는 데이터가 저장되는 물리적인 데이터 파일 번호로 유일한 값 블록번호는 데이터 파일 내에서 행을 포함한 블록 위치 행 번호는 블록 내에서 행 위치를 나타내는 번호 ROWID를 해석하는 방법은 다음과 같습니다. AAAE/5AAEAAAAJTAAD 라는 ROWID를 가진 컬럼이 있습니다. 이 ROWID의 앞 AAAE는 Data Object Id입니다. 다음 5AA는 File Id로 바뀔..

▶MySQL SELECT CAR_TYPE ,COUNT(OPTIONS) AS CARS FROM CAR_RENTAL_COMPANY_CAR WHERE OPTIONS LIKE '%시트%' GROUP BY CAR_TYPE ORDER BY CAR_TYPE; ▶Oracle SELECT CAR_TYPE ,COUNT(OPTIONS) AS CARS FROM CAR_RENTAL_COMPANY_CAR WHERE OPTIONS LIKE '%시트%' GROUP BY CAR_TYPE ORDER BY CAR_TYPE;

Q. 각 부서별 같은 업무(JOB)를 하는 사람의 인원수를 구하여 부서번호, 업무명, 인원수를 출력하라. 단, 부서번호 오름차순으로 정렬하라. SELECT DEPTNO ,JOB ,COUNT(*) AS CNT FROM EMP GROUP BY DEPTNO,JOB ORDER BY DEPTNO; Q. 다음 쿼리가 실행되지 않는 이유를 설명하라. SELECT * FROM EMPFAMILY WHERE AVG(AGE) > 50; A : WHERE절에 그룹함수 사용 불가 Q. 10번 부서의 월급의 평균, 최고 월급, 최저 월급, 인원수를 구하여 출력하라. SELECT AVG(SAL) AS AVG_SAL ,MAX(SAL) AS MAX_SAL ,MIN(SAL) AS MIN_SAL ,COUNT(*) AS CNT FROM E..

모든 문자를 소문자로 반환합니다. SELECT LOWER('ABC') FROM DUAL 모든 문자를 대문자로 반환합니다. SELECT UPPER('abc') FROM DUAL 각 단어의 첫 글자는 대문자로 다른 모든 글자는 소문자로 반환합니다. SELECT INITCAT('aBC') FROM DUAL 두 인수를 연결합니다. SELECT CONCAT('hello','Oracle') FROM DUAL 문자, 문자 길이에서 시작하는 일부를 반환합니다. SUBSTR(문자열,시작점,갯수)를 통해 사용할 수 있습니다. SELECT SUBSTR('ABCDEFG',3,4) FROM DUAL 여기서 주의해야할 것은 언어의 Index와 다르게 Oracle에서는 문자열 인수의 맨 앞 Index는 1를 가르킵니다. 다음 예제..

▶MySQL SELECT DATE_FORMAT(SALES_DATE,'%Y-%m-%d') AS SALES_DATE ,PRODUCT_ID ,USER_ID ,SALES_AMOUNT FROM ONLINE_SALE WHERE SALES_DATE BETWEEN DATE_FORMAT('2022-03-01 00:00:00','%Y-%m-%d HH24:MI:SS') AND DATE_FORMAT('2022-03-31 23:59:59','%Y-%m-%d HH24:MI:SS') UNION ALL SELECT DATE_FORMAT(SALES_DATE,'%Y-%m-%d') AS SALES_DATE ,PRODUCT_ID ,NULL AS USER_ID ,SALES_AMOUNT FROM OFFLINE_SALE WHERE SALES_D..