posted by 구름너머 2006. 4. 21. 09:27
* 이 팁들은 oracleclub.com의 질문과 답변에 올라온 글을 제가 정리했습니다.

1. 10%를 랜덤하게 가져옵니다.(오라클 8.1.7 이상부터 지원이 됩니다.) [하얀그림자님 답변글]

SQL> SELECT *
FROM table_name
SAMPLE (10);



2. 오라클에서 CASE문 사용 예제 [하얀그림자님 답변글]

SQL>SELECT col,
CASE
WHEN col >= 0 AND col < 6 THEN 'A'
WHEN col >= 6 AND col < 14 THEN 'B'
WHEN col >= 14 AND col < 22 THEN 'C'
WHEN col >= 22 THEN 'D'
END
FROM table_name;




3. 해당년도의 선택된 주의 첫번째 날자를 구하고 싶습니다.[석철희님 답변글]

[질문]
해당년도의 선택된 주의 첫번째 날자를 구하고 싶습니다.

예로 2002년 36번째 주의 첫번째 날자는 2002/09/02입니다.
2002년 36번째주를 가지고 '2002/09/02'이란 해당주의 첫번째 날자를 구하고 싶습니다.


[답변][석철희님 답변글]

SQL> SELECT NEXT_DAY(TO_DATE(해당년도||'0101','RRRRMMDD') + (선택한주 - 2) * 7, 2)
FROM DUAL;


SQL> SELECT NEXT_DAY(TO_DATE(2003||'0101','RRRRMMDD') + (2 - 2) * 7, 2)
FROM DUAL;
NEXT_DAY
--------
03/01/06


==> FROM 앞에 2 는 월요일을 그 주에 첫번째로 선택한 거니깐 일요일을
그 주의 첫번째 날로 바꾸시려면 1로 바꾸시면 됩니다.



4. DB 테이블 내용 복사 대해서[하얀그림자님 답변글]

1). Table A와 Table B 가 있는데. A의 내용을 B로 복사하는 방법

SQL>INSERT INTO b SELECT * FROM a;


2). Table A가 있고 Table B를 생성하면서 복사하는 방법

SQL>CREATE TABLE b AS SELECT * FROM a;


3). Table A가 있고 Table A와 구조가 같고 내용은 복사하지 않는 Table B 생성 방법

SQL>CREATE TABLE b AS SELECT * FROM a WHERE 1 = 2;



5.점수별로 몇명씩 있는지 알고 싶습니다 .[배경열님 답변글]

[질문]
이름 점수
===============
홍길동 90
김길동 98
이길동 75
성춘향 60
이동국 30
최성국 100
김남일 85

일때 .....
점수별로 몇명씩 있는지 알고 싶습니다 ..

원하는 결과값
=============
점수대 명수
===============
90-100 3
80-89 1
0-79 3


[답변 ]
Sign Function을 쓰세요.
SELECT
DECODE(SIGN(점수-89),1,'90-100',
DECODE(SIGN(점수-79),1,'80-89','0-79')),
COUNT(*)
FROM
성적
GROUP BY
DECODE(SIGN(점수-89),1,'90-100',
DECODE(SIGN(점수-79),1,'80-89','0-79'))
ORDER BY 1 DESC




6. 컬럼에 해당하는 테이블명 알아내기..

SQL>SELECT TABLE_NAME
FROM USER_TAB_COLS
WHERE COLUMN_NAME ='BOARD_ID'

이렇게 하시면 됩니다..
컬럼관련 정보는 USER_TAB_COLS 데이터사전을 통해 확인할 수 있습니다.
COLS라는 시노님을 이용해도 됩니다.


SQL>SELECT COUNT(COLUMN_NAME) "Column Count"
FROM COLS
WHERE TABLE_NAME ='STORM_BOARD'



시간날때마다 틈틈히 추가하겠습니다.

================================================
* Oracle Community OracleClub.com
* http://www.oracleclub.com
* http://www.oramaster.net
* 운영자 : 김정식 (oramaster _at_ empal.com)
================================================
※ oracleclub 강좌를 다른 홈페이지에 퍼가실 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

'ORACLE' 카테고리의 다른 글

제6회 정보시스템감리사 시험공고.  (0) 2006.05.24
테이블 조회(PK,comments포함)  (0) 2006.04.21
sysdate 활용방법  (0) 2006.04.21
테이블의 필드명 변경하기  (0) 2006.04.20
ORA-01027  (0) 2006.04.20