2014년 10월 14일 화요일

버츄얼 박스 winXP 하드디스크 용량 늘리기


1. cmd창으로 매니저로 늘린후

"c:\Program Files\Oracle\VirtualBox\VBoxManage.exe" modifyhd "c:\Users\sjinc_kju\VirtualBox VMs\VDI파일들\gema-xp.vdi" --resize 20480

2. winxp 접속후 파티션매직 등 프로그램으로 파티션 병합 해서 늘림
  병합말고 사이즈늘림으로도 가능

2014년 7월 16일 수요일

[delphi] Incompatible types: 'string' and 'PAnsiChar', 델파이2009 에서의 AnsiString 과 PAnsiChar 처리

만약, 델파이 2007 버전까지 잘 쓰던 코드가 2009 버전에서 아래와 같이
Incompatible types: 'string' and 'PAnsiChar'
에러메세지가 발생한다면,

선언부
//allpath : string;     //델파이 2007
allpath : Ansistring;   //델파이 2009  (AnsiString 로 선언하고, PAnsiChar 로 처리해야함)

처리부
//WinExec(Pchar(allpath),SW_SHOW);  //델파이 2007 에서 사용시
//winexec(PAnsiChar(allpath),SW_SHOW);  //에러는 안나는데 실행안됨(상단에서 AnsiString 로 선언하지 않은 경우)
WinExec(PAnsiChar(allpath),SW_SHOW);  //선언에서 AnsiString 로 선언해야 제대로 처리된다.



2014년 4월 28일 월요일

오라클 5장 연습문제 및 정답

◈ 연 습 문 제 ◈

1. EMP 테이블에서 인원수,최대 급여,최소 급여,급여의 합을 계산하여 출력하는 SELECT 문장을 작성하여라.

select COUNT(ename) as 인원수
        ,MAX(sal) as 최대급여
        ,MIN(sal) as 최소급여
        ,SUM(sal) as 급여합
from emp;
è  그룹함수 이용하여, 출력

2. EMP 테이블에서 각 업무별로 최대 급여,최소 급여,급여의 합을 출력하는 SELECT 문장을 작성하여라.

select job as 업무
        ,MAX(sal) as 최대급여
        ,MIN(sal) as 최소급여
        ,SUM(sal) as 급여합
from emp
group by job;
è  Groupby 이용하여, 직업별로 묶어서 출력

3. EMP 테이블에서 업무별 인원수를 구하여 출력하는 SELECT 문장을 작성하여라.

select job as 업무, count(ename) as 인원수
from emp
group by job;
è  Groupby 한 뒤 카운트를 이용하여, 업무별로 구함





4. EMP 테이블에서 최고 급여와 최소 급여의 차이는 얼마인가 출력하는 SELECT 문장을 작성하여라.

select max(sal) - min(sal) as 급여차
from emp;
è  Max min 구해서 차를 구함




5. EMP 테이블에서 아래의 결과를 출력하는 SELECT 문장을 작성하여라.
H_YEAR  COUNT(*)  MIN(SAL)  MAX(SAL)  AVG(SAL)  SUM(SAL)
------ --------- --------- --------- --------- ---------
80             1       800       800       800       800
81            10       950      5000    2282.5     22825
82             2      1300      3000      2150      4300
83             1      1100      1100      1100      1100

select trunc(hiredate, 'YY') AS H_YEAR, COUNT(*), MIN(SAL), MAX(SAL), AVG(SAL), SUM(SAL)
from emp
group by trunc(hiredate, 'YY');
è  Groupby trunc로 짤라서 모으고, 셀렉트문에서 출력.


6. EMP 테이블에서 아래의 결과를 출력하는 SELECT 문장을 작성하여라.
    TOTAL      1980      1981      1982      1983
--------- --------- --------- --------- ---------
       14         1        10         2         1

select count(*) as total
      ,sum(decode(to_char(hiredate, 'YYYY'), 1980,1,0)) as "1980"
      ,sum(decode(to_char(hiredate, 'YYYY'), 1981,1,0)) as "1981"
      ,sum(decode(to_char(hiredate, 'YYYY'), 1982,1,0)) as "1982"
      ,sum(decode(to_char(hiredate, 'YYYY'), 1983,1,0)) as "1983"
from emp;
è  디코드문으로 년도별인것만 골라낸 뒤 sum을 해줘서 몇 명인지 구함

7. EMP 테이블에서 아래의 결과를 출력하는 SELECT 문장을 작성하여라.
JOB       Deptno 10 Deptno 20 Deptno 30     Total
--------- --------- --------- --------- ---------
ANALYST                  6000                6000
CLERK          1300      1900       950      4150
MANAGER        2450      2975      2850      8275
PRESIDENT      5000                          5000
SALESMAN                           5600      5600

select job
      ,sum(decode(deptno, 10, sal)) as Deptno10
      ,sum(decode(deptno, 20, sal)) as Deptno20
      ,sum(decode(deptno, 30, sal)) as Deptno30
      ,sum(sal) as total
from emp
group by job
order
by job;

è  디코드문을 이용해서 부서번호가 10,20,30인사람별로 급여 합을 구함

오라클 6장 연습문제 및 정답

◈ 연 습 문 제 ◈

1. EMP 테이블에서 모든 사원에 대한 이름,부서번호,부서명을 출력하는 SELECT 문장을 작성하여라.

select A.ename, A.deptno, B.DNAME
from emp A join dept B
on A.DEPTNO = B.DEPTNO
è  join으로 부서번호를 걸고 dept 테이블에 부서명을 가져와서 출력

2. EMP 테이블에서 NEW YORK에서 근무하고 있는 사원에 대하여 이름,업무,급여,부서명을 출력하는 SELECT 문장을 작성하여라.

select ename, job, sal, b.dname
 from emp a, dept b
where a.deptno = b.deptno
  and b.LOC = 'NEW YORK';
è  부서번호로 조인을 걸고, dept테이블에 조건으로 뉴욕을 걸어서 출력합니다.

3. EMP 테이블에서 보너스를 받는 사원에 대하여 이름,부서명,위치를 출력하는 SELECT 문장을 작성하여라.

select a.ename, b.dname, b.loc
 from emp a join dept b
 on a.deptno = b.deptno
where a.comm is not null
  and a.comm <> '0';
è  Deptno로 조인한 후 보너스가 null이 아닌 것과 0이 아닌 것으로 조건 설정 후 출력

4. EMP 테이블에서 이름 중 L자가 있는 사원에 대하여 이름,업무,부서명,위치를 출력하는 SELECT 문장을 작성하여라.

select a.ename, a.job, b.dname, b.loc
 from emp a join dept b
   on a.deptno = b.deptno
where a.ename Like '%L%';

è  Deptno 조인한 L자가 들어간사람을 조건을 Like 걸어서 조건대로 출력

5. 아래의 결과를 출력하는 SELECT 문장을 작성하여라.(관리자가 없는 King을 포함하여 모든 사원을 출력)
Employee        Emp# Manager         Mgr#
---------- --------- ---------- ---------
KING            7839
BLAKE           7698 KING            7839
CLARK           7782 KING            7839
. . . . . . . . . .
14 rows selected.

select a.ename as Employee, a.empno as Emp#, b.ename as Manager, b.mgr as Mgr#
from emp a join emp b
  on a.mgr = b.empno
order by a.mgr desc;
è  emp테이블 하나로 셀프조인하여, 사원번호랑 매니저번호를 조인해서, 자신의 매니저를 보여주도록 출력

6. EMP 테이블에서 그들의 관리자 보다 먼저 입사한 사원에 대하여 이름,입사일,관리자 이름, 관리자 입사일을 출력하는 SELECT 문장을 작성하여라.

select a.ename     as 이름
         ,a.hiredate   as 입사일
         ,b.ename     as 관리자이름
         ,B.HIREDATE as 관리자입사일
from emp a, emp b
where a.mgr = b.empno
   and a.hiredate < b.hiredate;
è  셀프조인으로 사원번호와 관리자번호 매칭 후 입사일을 비교하여, 먼저 입사한 사원만 출력


7. EMP 테이블에서 사원의 급여와 사원의 급여 양만큼 *를 출력하는 SELECT 문장을 작성하여라. * 100을 의미한다.
Employee and their salary
-----------------------------------------------------------------
KING      **************************************************
BLAKE     ****************************
CLARK     ************************
JONES     *****************************
MARTIN    ************
ALLEN     ****************
TURNER    ***************
. . . . . . . . . .
14 rows selected.

select ename, rpad( ' ' ,trunc (sal / 100) , '*') as 급여별 
from emp
order by sal desc;
è  급여를 100으로 나눈 개수만큼 별을 찍어야하기 때문에 소수점은 절삭한 rpad 함수를 이용하여 왼쪽부터 * 채워서 출력.