프로그래밍 자료 저장 블로그
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'
에러메세지가 발생한다면,
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 로 선언해야 제대로 처리된다.
//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');
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;
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 함수를 이용하여 왼쪽부터 *로 채워서 출력.
피드 구독하기:
글 (Atom)