ORACLE/SQL2010. 1. 3. 13:19
반응형
* 이 팁들은 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’



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

  ================================================
    * 데이터베이스 정보공유 커뮤니티 oracleclub.com
    * 강좌 작성자 : 김정식 (oramaster _at_ naver.com)
  ================================================
※ oracleclub 강좌를 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
※ oracleclub 강좌는 개인의 학습용으로만 사용 할 수 있습니다. 학원 홍보용이나 수익을 얻기 위한 용도로
    사용을 하시면 안됩니다. ^^
반응형

'ORACLE > SQL' 카테고리의 다른 글

SQL *Plus 명령어와 SQL문 구분하기  (0) 2010.01.03
DB 최적화를 고려한 다건조회 페이징처리  (0) 2010.01.03
nvl2  (0) 2010.01.03
UNION  (0) 2010.01.03
case  (0) 2010.01.03
Posted by [PineTree]