ROUND
회원 테이블의 마일리지를 12로 나눈 값을 검색
(소수 3째자리 반올림, 절삭)
SELECT mem_mileage,
ROUND(mem_mileage / 12, 2),
TRUNC(mem_mileage / 12, 2)
FROM member;
MOD
- MOD(c, n) : n 으로 나눈 나머지
SELECT MOD(10,3)
FROM dual;
SELECT mem_id, mem_name, mem_regno1, mem_regno2,
mod(SUBSTR(mem_regno2,1,1) , 2) 성별
FROM member;
SYSDATE
- date + NUMBER
- date - NUMBER
- date - date
- date + 1/24
SELECT SYSDATE"현재시간",
SYSDATE - 1 "어제 이시간",
SYSDATE + 1 "내일 이시간"
FROM dual;
회원테이블의 생일과 12000일 째 되는 날을 검색
SELECT mem_bir, mem_bir + 12000
FROM member;
ADD_MONTH
SELECT ADD_MONTHS(SYSDATE, 5)
FROM dual;
NEXT_DAY
LAST_DAY
SELECT NEXT_DAY(SYSDATE, '월요일'),
LAST_DAY(SYSDATE)
FROM dual;
-- 이번달이 몇일남았는지 검색
SELECT LAST_DAY(SYSDATE) - SYSDATE
FROM dual;
SELECT round(sysdate, 'yyyy'),
round(sysdate, 'q')
FROM dual;
EXTRACT
SELECT EXTRACT(YEAR FROM SYSDATE) "년도",
EXTRACT(MONTH FROM SYSDATE) "월",
EXTRACT(DAY FROM SYSDATE) "일"
FROM dual;
생일이 3월인 회원을 검색
SELECT mem_id, mem_name, mem_bir, EXTRACT(MONTH FROM mem_bir)
FROM member
WHERE EXTRACT(MONTH FROM mem_bir) = 3;
CAST(expr AS type)
SELECT '[' || CAST('Hello'AS CHAR(30)) || ']' "형변환"
FROM dual;
SELECT '[' || CAST('Hello'AS VARCHAR(30)) || ']' "형변환"
FROM dual;
-- 0000-00-00, 0000/00/00, 0000.00.00, 00000000,
-- 00-00-00, 00/00/00, 00.00.00
SELECT CAST('1997/12/25' AS DATE)
FROM dual;
TO_CHAR
TO_NUMBER
TO_DATE
SELECT TO_CHAR(SYSDATE, 'AD YYYY, CC"세기"')
FROM dual;
SELECT TO_CHAR(CAST('2008-12-25' AS DATE),
'YYYY.MM.DD HH24:MI')
FROM dual;
-- 상품테이블에서 상품입고일을 '2008-09-28' 형식으로 나오게 검색하시오
SELECT TO_CHAR(buy_date, 'YYYY-MM-DD')
FROM buyprod;
-- 회원이름과 생일로 다음처럼 출력되게 작성하시오
SELECT mem_name || '님은' || TO_CHAR(mem_bir, 'YYYY') || '년'
|| TO_CHAR(mem_bir, 'MM') || '월 출생이고 태어난 요일은'
|| TO_CHAR(mem_bir, 'Day')
FROM member;
SELECT TO_CHAR( 1234.6, '99,999.00'),
TO_CHAR( 1234.6, '9999.99'),
TO_CHAR( 1234.6, '99999999999.99') -- 9가 메모리 개수(자릿수가 맞지 않아 깨짐)
FROM dual;
SELECT TO_CHAR( -1234.6, 'L9999.00PR'),
TO_CHAR( -1234.6, 'L9999.99PR')
FROM dual;
-- 여자인 회원이 구매한 상품 중에
-- 상품분류에 전자가 포함되어 있고,
-- 거래처의 지역이 서울인
-- 상품코드, 상품명 조회하기
SELECT prod_id, prod_name
FROM prod
WHERE prod_buyer in (select lprod_gu
from lprod
where lprod_nm LIKE '%전자%')
AND prod_lgu in (select buyer_id
from buyer
where buyer_add1 LIKE '서울%')
-- where substr(buyer_add1, 1, 2) = '서울') 과 동일
AND prod_id in (select cart_prod
from cart
where cart_member in (select mem_name
from member
where mod(SUBSTR(mem_regno2,1,1), 2) = 0));
GROUP
AVG
DISTOMCT
ALL
SELECT ROUND(AVG(DISTINCT prod_cost), 2) as rnd_1,
ROUND(AVG(All prod_cost), 2) as rnd_2,
ROUND(AVG(prod_cost), 2) as rnd_3
FROM prod;
COUNT
SELECT COUNT(DISTINCT prod_cost), COUNT(All prod_cost),
COUNT(prod_cost), COUNT(*)
FROM prod;
GROUP
SELECT mem_job,
COUNT(mem_job) 자료수, COUNT(*) "자료수(*)"
FROM member
GROUP BY mem_job;
-- 그룹(집계)함수만 사용하는 경우에는
-- Group By 절을 사용하지 않아도 됨
-- 조회할 일반컬럼이 사용되는 경우에는 Group By절을 사용해야 합니다.
-- - Group By 절에는 조회에 사용된 일반컬럼은 무조건 넣어 줍니다.
-- - 함수를 사용한 경우에는 함수를 사용한 원형 그대로를 넣어줍니다.
-- Order By절에 사용하는 일반컬럼 또는 함수를 이용한 컬럼은
-- - 무조건 Group By절에 넣어 줍니다.
-- sum(), avg(), min(), max(), count()
SELECT mem_job, mem_like,
count(mem_job) as cnt1, count(*) as cnt2
FROM member
WHERE mem_mileage > 10
AND mem_mileage > 10
GROUP BY mem_job, mem_like, mem_id
ORDER BY cnt1, mem_id Desc;
-- 수영을 취미로하는 회원들이
-- 주로 구매하는 상품에 대한 정보를 조회하려고 합니다.
-- 상품명별로 count 집계합니다.
-- 조회컬럼, 상품명, 상품 count
-- 정렬은 상품코드를 기준으로 내림차순
SELECT prod_name, count(prod_name)
FROM prod
WHERE prod_id in (select cart_prod
from cart
where cart_member in (select mem_id
from member
where mem_like = '수영'))
GROUP BY prod_name, prod_id
ORDER BY prod_id Desc;
'DB > Oracle' 카테고리의 다른 글
[Oracle] 테이블 스페이스 및 Comment 관리 (0) | 2024.01.19 |
---|---|
[Oracle] DataBase 백업 방법 (0) | 2024.01.19 |
[ORACLE] STUDY_2DAY(LIKE, ESCAPE, CONCAT, TRIM, SUBSTR, REPLACE) (0) | 2022.11.17 |
[ORACLE] STUDY_2DAY(서브 쿼리) (0) | 2022.11.17 |
[ORACLE] STUDY_1DAY(SELECT, FROM, WHERE) (0) | 2022.11.17 |