04.IT Knowledge/RDBMS2008. 12. 18. 14:42

[SQL 작성 요령]
1. 중심축으로 삼을 테이블을 선정한다.
2. 건수를 기록한다.
3. 가로로 정보를 추가하는 경우 JOIN을 세로로 정보를 추가하는 경우는 UNION을 사용한다.
4. 건수를 조회하여 확인한다.

[[ 예제 테이블 ]]

T1 T2
C11 C12 C21 C22
A 1 E 11
B 2 F 12
C 3 G 13
D 4
E 5
F 6

INNER JOIN (건수의 손실을 주의할 것)
SQL>>
SELECT T1.C11, T1.C12, T2.C22
  FROM T1
 INNER JOIN T2
         ON T1.C11 = T2.C21
RESULT>>
C11 C12 C22
E 5 11
F 6 12

LEFT OUTER JOIN (의도치 않은 Null의 발생, 건수의 증가를 주의할 것)
SQL>>
SELECT T1.C11, T1.C12, T2.C22
  FROM T1
  LEFT OUTER JOIN T2
         ON T1.C11 = T2.C21
RESULT>>
C11 C12 C22
A 1 Null
B 2 Null
C 3 Null
D 4 Null
E 5 11
F 6 12

RIGHT OUTER JOIN (가급적 Left outer join으로 사용할 것을 고려한다.)
SQL>>
SELECT T1.C11, T1.C12, T2.C21, T2.C22
  FROM T1
  FULL OUTER JOIN T2
         ON T1.C11 = T2.C21
RESULT>>
C11 C12 C21 C22
A 1 Null Null
B 2 Null Null
C 3 Null Null
D 4 Null Null
E 5 E 11
F 6 F 12
Null Null G 13

UNION (중복이 제거된다. 정렬이 일어나므로 속도의 저하가 있을 수 있다.)
SQL>>
SELECT C11, C12
  FROM T1
UNION
SELECT C21, C22
  FROM T2
RESULT>>
C11 C12
A 1
B 2
C 3
D 4
E 5
F 6
G 13

UNION ALL
SQL>>
SELECT C11, C12
  FROM T1
UNION ALL
SELECT C21, C22
  FROM T2
RESULT>>
C11 C12
A 1
B 2
C 3
D 4
E 5
F 6
E 11
F 12
G 13

Posted by 아주 오래된 미래
04.IT Knowledge/RDBMS2008. 11. 28. 18:36
SELECT TS.STATUS
     , DATA.NAME
     , TS.CONTENTS
     , EXTENT_MANAGEMENT
     , DATA.MBYTES "SPACE(MB)"
     , FREE.FREE "FREE(MB)"
     , TRUNC((DATA.MBYTES-FREE.FREE)/DATA.MBYTES*100,2) "Used(%)"
  FROM (SELECT TABLESPACE_NAME             AS NAME
             , TRUNC(SUM(BYTES/1024/1024)) AS MBYTES
          FROM DBA_DATA_FILES
         GROUP BY TABLESPACE_NAME
       ) DATA
     , (SELECT FREE.TABLESPACE_NAME
             , TRUNC(SUM(FREE.BYTES)/1024/1024,1) AS FREE
          FROM DBA_FREE_SPACE FREE
         GROUP BY FREE.TABLESPACE_NAME
        ) FREE
     , DBA_TABLESPACES    TS
 WHERE DATA.NAME = FREE.TABLESPACE_NAME
   AND DATA.NAME = TS.TABLESPACE_NAME
;

SELECT TS.STATUS
     , DATA.FILE_NAME
     , DATA.NAME
     , DATA.MBYTES "SPACE(MB)", FREE.FREE "FREE(MB)"
     , TRUNC((DATA.MBYTES-FREE.FREE)/DATA.MBYTES*100,2) "Used(%)"
  FROM (SELECT TABLESPACE_NAME NAME
             , FILE_NAME
             , FILE_ID
             , TRUNC(BYTES/1024/1024) MBYTES
          FROM DBA_DATA_FILES
        ) DATA
     , (SELECT TABLESPACE_NAME
             , FILE_ID
             , TRUNC(BYTES/1024/1024,1) FREE
          FROM DBA_FREE_SPACE FREE
        ) FREE
     , DBA_TABLESPACES    TS
 WHERE DATA.NAME    = FREE.TABLESPACE_NAME
   AND DATA.NAME    = TS.TABLESPACE_NAME
   AND DATA.FILE_ID = FREE.FILE_ID
   AND DATA.NAME    NOT IN ('UNDOTBS1', 'SYSTEM')
;
Posted by 아주 오래된 미래
04.IT Knowledge/SAS2008. 11. 27. 17:07
/* work 전체 지움 */
proc datasets library=work kill; run;

/* work.aa 데이터셋 지움 */
proc datasets library=work nolist;
delete aa;
run;
Posted by 아주 오래된 미래
04.IT Knowledge/SAS2008. 11. 4. 09:11
proc sql;
connect to oracle (user=scott password=tiger);
create view budget2000 as select amount_b,amount_s
   from connection to oracle
   (select Budgeted, Spent from annual_budget);
quit;


proc sql;
   connect to oracle(user=scott password=tiger);
   execute (create view whotookorders as select ordernum, takenby,
     firstname, lastname,phone from orders, employees
     where orders.takenby=employees.empid) by oracle;
   execute (grant select on whotookorders to testuser) by oracle;
disconnect from oracle;
quit;

Posted by 아주 오래된 미래
04.IT Knowledge/RDBMS2008. 10. 31. 20:15
CREATE OR REPLACE FUNCTION ISDATE8( P_DATE IN VARCHAR2, D_FORMAT IN VARCHAR2 DEFAULT 'YYYYMMDD', P_ERR IN VARCHAR2 DEFAULT '99991231' )
RETURN VARCHAR2
IS
BEGIN
    IF LENGTH(P_DATE) < 8 THEN
        RETURN P_ERR;
    ELSE
        RETURN TO_CHAR(TO_DATE(P_DATE,D_FORMAT),D_FORMAT);
    END IF;
    EXCEPTION
        WHEN OTHERS THEN BEGIN
            RETURN P_ERR;
    END;
END;
/

Posted by 아주 오래된 미래
04.IT Knowledge/Adobe Flex2008. 10. 21. 14:35
var source:Object = new Object();
source.col1 = "1";
source.col2 = "2";
source.col3 = "3";
source.col4 = "4";
source.col5 = "5";
var target:Object = new Object();
for(var i:String in source) {
    target[i] = source[i];
    trace(target[i]);
}
Posted by 아주 오래된 미래
04.IT Knowledge/SAS2008. 10. 15. 13:49
%let metaUser          = %nrquote(sasuserName);
%let metaPass          = %nrquote(sasPassword);
%let metaPort          = %nrquote(metadataPort);
%let metaServer        = %nrquote(metadataServerNameOrIP);
%let metaRepository    = %nrquote(Foundation);
%let metaTargetLibrary = %nrquote(targetLibraryName);

proc metalib;
  omr (       library="&metaTargetLibrary"
                 user="&metaUser"
             password="&metaPass"
           metaserver="&metaServer"
       metarepository="&metaRepository"
             metaport="&metaPort");
update_rule=(delete);
report;
run;
Posted by 아주 오래된 미래
04.IT Knowledge/SAS2008. 10. 15. 13:48
proc sql;
     CREATE TABLE DD AS
     select *
      from dictionary.members
      where libname in('CVSAG','CVSAP','CVSBN','CVSCZ','CVSDG','CVSES','CVSFS',
                       'CVSHS','CVSIS','CVSMK','CVSPT','CVSRO','CVSSW','CVSUK',
                       'CVSTOT','DAT_VAL');
quit;

%MACRO DIR_CRE (LIBNAME,MEMNAME,Z);
 
PROC CONTENTS NOPRINT DATA=&LIBNAME..&MEMNAME OUT=WORK.&MEMNAME;
RUN;

PROC SQL;
      CREATE TABLE BB AS
   SELECT LIBNAME, MEMNAME, COUNT(NAME) AS CNT
      FROM WORK.&MEMNAME
      GROUP BY LIBNAME, MEMNAME;
QUIT;

PROC APPEND BASE=WRSTEMP.GEN_TABLE DATA=WORK.BB FORCE;
RUN;

%MEND;

DATA _null_;
  if 1=1 then set WORK.DD nobs=obs;
    do z=1 to obs;
      set WORK.DD;
      call execute('%DIR_CRE ('||compress(LIBNAME)||','||compress(MEMNAME)||','||compress(z)||')');
    end;
RUN;
Posted by 아주 오래된 미래
04.IT Knowledge/SAS2008. 10. 15. 13:08
proc sql;

create table aaa as
select * from dictionary.tables;

quit;

proc sql;

create table aaa as
select * from dictionary.columns;

quit;
Posted by 아주 오래된 미래
04.IT Knowledge/Adobe Flex2007. 10. 31. 17:51

 Adobe Flex....
 정보계에서 일하는 제게 있어 아주 꿀같은 프로그램입니다.
 예상외로 폭발적으로 유행을 타지 않는 다는 것이 다소 신기할 정도로 좋더군요.
 너무 맘에 들어 Sample을 이리저리 수집하여 아주 요긴하게 써먹고 있습니다.

 제가 가지고 있는 Sample을 소개해 드리겠습니다.
 원래 주소는 잘 기억이 안납니다.

 1. Adobe에서 제공하는 Component 소개 샘플입니다.
  소스가 같이 제공되어 가져다 쓰기 좋습니다.

  url : http://javarang.net/flex_samples/base/explorer.html

 2. 누군가가 선물해준 차트 예시입니다.
  으.....너무너무 멋집니다...

  url : http://javarang.net/flex_samples/chart01/app.html

 3. Flex 콤포넌트들의 스타일을 미리 볼 수 있습니다.
  이 페이지도 아주 유용하게 쓰고 있죠..

  url : http://javarang.net/flex_samples/explorer/Flex2StyleExplorer.html

 4. 음....객체 사이의 관계를 표현하기 좋은 예시입니다.

  url : http://javarang.net/flex_samples/SpringGraph/AmazonDemo.html

 5. 너무 멋진 달력~~

  url : http://javarang.net/flex_samples/calendar/app.html

 6. 구간 선택기능을 가진 차트

  url : http://javarang.net/flex_samples/selector/main.html

 7. BI 화면의 정수를 보여주는 New York Times의 증시 차트

  url : http://www.nytimes.com/packages/khtml/2006/04/02/business/20060402_SECTOR_GRAPHIC.html

 8 . 아기자기한 Gauge 차트
  직접 만들어 보았습니다. ^^

  url : http://javarang.net/flex_samples/jgauge/JavarangGauge.html


Posted by 아주 오래된 미래