Q 23.
22번의 문제에서 언급한 between 말고 쓸 수 있는 SQL?
Q 22 = emp테이블 에서 급여가 1300 ~ 1800 사이에 있는 직원의 정보를 사원이름, 업무, 급여순 으로 SQL 출력
and = 2개가 참참
or = 2개중 하나만 참
SQL> select ename, job, sal from emp where sal >= 1300 and sal <= 1800;
ENAME JOB SAL
---------- --------- ----------
ALLEN SALESMAN 1600
TURNER SALESMAN 1500
MILLER CLERK 1300
Q 24.
날짜 검색 -> 문자처럼 검색
emp테이블 에서 81/02/22 이후에 입사한 사원의 이름, 입사일 출력
SQL>select ename, hiredate from emp where hiredate >= '81/02/22';
ENAME HIREDATE
---------- --------
WARD 81/02/22
JONES 81/04/02
MARTIN 81/09/28
BLAKE 81/05/01
CLARK 81/06/09
SCOTT 87/04/19
KING 81/11/17
TURNER 81/09/08
ADAMS 87/05/23
JAMES 81/12/03
FORD 81/12/03
ENAME HIREDATE
---------- --------
MILLER 82/01/23
Q 25.
자주 사용이 되거나 검색이 되는 SQL구문이 있다면(앞으로 계속해서 사용이 될 것 같은 문장이 있다면) 파일로 저장해서 불러오기
4장 SQLPlus -> save 명령어 -> 효율성 up
형식)save '경로 포함해서 저장할 파일명'(~.sql or .txt)
SQL>save 'c:\webtest\2.db\print\datesearch.txt';
file c:\webtest\2.db\print\datesearch.txt(이)가 생성되었습니다.
Q 26.
sql구문이 저장된 파일(25번 문제)을 불러오는 방법
형식) get 경로 포함해서 불러올 파일명 or @경로포함해서 불러올 파일명
history 기능을 써서 확인 후 get -> @ 로 바꿔서 실습
get : 파일을 불러올 때 바로 실행하는 것이 아니라 실행시킬 SQL구문을 먼저 출력 시켜준다.
@ : 파일을 불러오면서 바로 그 파일의 내용대로 실행
SQL>get c:\webtest\2.db\print\datesearch.txt;
SQL>@ 'c:\webtest\2.db\print\datesearch.txt';
Q 27.
jsp 웹사이트 우편번호 검색 -> 회원가입(주문 -> 배송지) -> 동이름 -> 우편번호 뿐만 아니라 나머지 주소 -> **우편번호 open API를 사용한다.**
create table zipcode(
zipcode char(7) not null,
area1 char(10) null,
area2 char(20) null,
area3 char(40) null,
area4 char(20) null);
SQL>@ c:\webtest\2.db\print\zipcode.txt;
commit을 하게 되면 rollback은 사용이 안됨(트랜잭션 명령어)
Q. 28
emp테이블 에서 사원명이 A자로 시작하는 사원을 찾아서 그 사원의 이름과 급여를 출력(like 연산자)
문자열 검색 :
정확한 데이터를 알고 있을때
정확한 데이터를 모를때 : like 연산자
특징)
%, _ : 특수기호를 이용하여 검색(_ (글자 한 개 와 매치))
% : 찾는 문자열의 길이를 모를때 (2,3,4,)
김% = 김외, 김길수, 김수순...(김씨 성으로 시작하는 모든 사람 찾기)
김_ = 김외, 김수.... 김씨 성을 가지고 글자길이는 두글자인 사람 찾기
김__ = 김씨포함(세글자)
%수 = 수 로 끝나는 문자열을 찾기
%미아2동% = 찾는 문자열 중에 미아2동 이 들어가 있는 문자열 검색
SQL>select ename, sal from emp where ename like 'A%'; -> A로 시작하는 ename
ENAME SAL
---------- ----------
ALLEN 1600
ADAMS 1100
SQL>select ename, job, sal from emp where ename not like 'A%'; -> A로 시작하지 않는 ename
ENAME JOB SAL
---------- --------- ----------
SMITH CLERK 800
WARD SALESMAN 1250
JONES MANAGER 2975
MARTIN SALESMAN 1250
BLAKE MANAGER 2850
CLARK MANAGER 2450
SCOTT ANALYST 3000
KING PRESIDENT 5000
TURNER SALESMAN 1500
JAMES CLERK 950
FORD ANALYST 3000
ENAME JOB SAL
---------- --------- ----------
MILLER CLERK 1300
Q 29.
emp테이블 에서 급여가 1500 이거나 업무가Saleseman인 사원을 찾아서 그 사원의 이름, 업무, 급여 순으로SQL 출력
~where 조건식 or 조건식2 or ~
and and
or : 둘 중의 하나만을 만족 할 때 결과 출력
SQL>select ename, job, sal from emp where sal >= 1500 or job = 'SALESMAN';
ENAME JOB SAL
---------- --------- ----------
ALLEN SALESMAN 1600
JONES MANAGER 2975
BLAKE MANAGER 2850
CLARK MANAGER 2450
SCOTT ANALYST 3000
KING PRESIDENT 5000
TURNER SALESMAN 1500
FORD ANALYST 3000
SQL>select ename,job,sal "saltest" from emp where sal=1500 or job='SALESMAN';
ENAME JOB saltest
---------- --------- ----------
ALLEN SALESMAN 1600
WARD SALESMAN 1250
MARTIN SALESMAN 1250
TURNER SALESMAN 1500
SQL>select ename,job,sal "saltest" from emp where sal=1500 and job='SALESMAN';
ENAME JOB saltest
---------- --------- ----------
TURNER SALESMAN 1500
=>변경=>or->and(특정 단어를 변경?)
SQL plus명령어=>change,list 명령어를 이용
**********************************
편집=>편집할 내용이 많으면 ed를 이용=>편집창 이용
단어중심으로 변경->change 명령어
**********************************
=>바꿀단어가 있는 행을 지정
1)list or l 수정할 단어가 들어가 있는 행번호
2) c(hange)/변경전단어/변경후 단어
3) 변경된 내용대로 실행하라 / or r(un)
SQL>l 3
member테이블에서 id가 nup이고 passwd가 1234인 회원이 있는지 검색하는 SQL작성?
SQL>select id,passwd from member where id='nup' and passwd='1234';
SQL>select id,passwd from member where id='nup' and passwd='1234';
Q 30.
emp테이블의 사원의 이름중에서 두번째글자가 L자인 직원을 찾아서 그 직원의 이름,급여를 출력?
-------------------------------
like '_L%'
SQL>select ename, sal from emp where ename like '_L%';
ENAME SAL
---------- ----------
ALLEN 1600
BLAKE 2850
CLARK 2450
SQL>select ename, sal from emp where ename not like '_L%'; -> 2번째 글자가 L이 아닌 경우
ENAME SAL
---------- ----------
SMITH 800
WARD 1250
JONES 2975
MARTIN 1250
SCOTT 3000
KING 5000
TURNER 1500
ADAMS 1100
JAMES 950
FORD 3000
MILLER 1300
Q 31.
emp테이블 에서 사원번호가 7782, 7788, 7844인 사원을 검색해서 사원의 이름, 급여, 연봉을 출력(단 연봉 ->"total")
SQL>select empno, ename, sal, sal*12 total from emp where empno = 7782 or empno = 7788 or empno = 7844;
EMPNO ENAME SAL TOTAL
---------- ---------- ---------- ----------
7782 CLARK 2450 29400
7788 SCOTT 3000 36000
7844 TURNER 1500 18000
in : 여러 값 중 하나와 일치 하는 행을 찾는 연산자
형식) ~찾을 필드명 in(값)
SQL>select empno, ename, sal, sal*12 total from emp where empno in (7782, 7788, 7844);
EMPNO ENAME SAL TOTAL
---------- ---------- ---------- ----------
7782 CLARK 2450 29400
7788 SCOTT 3000 36000
7844 TURNER 1500 18000
SQL>select empno, ename, sal, sal*12 total from emp where empno not in (7782, 7788, 7844); -> in 값을 제외한 나머지
EMPNO ENAME SAL TOTAL
---------- ---------- ---------- ----------
7369 SMITH 800 9600
7499 ALLEN 1600 19200
7521 WARD 1250 15000
7566 JONES 2975 35700
7654 MARTIN 1250 15000
7698 BLAKE 2850 34200
7839 KING 5000 60000
7876 ADAMS 1100 13200
7900 JAMES 950 11400
7902 FORD 3000 36000
7934 MILLER 1300 15600
Q 32.
DB->null (값이 들어가 있지 않은 상태)->눈에 X
' ' =>저장은 되는데 눈에 X (ex 공기)
null을 사용=>값이 들어가 있지 않은 상태의 필드를 검색할때 사용
SQL>select ename, sal, comm from emp where comm is null; -> comm 값이 null(비어있는)인 직원을 찾기
==
ENAME SAL COMM
---------- ---------- ----------
SMITH 800
JONES 2975
BLAKE 2850
CLARK 2450
SCOTT 3000
KING 5000
ADAMS 1100
JAMES 950
FORD 3000
MILLER 1300
SQL>select ename, sal, comm from emp where comm is not null; -> 데이터 값이 들어있음
ENAME SAL COMM
---------- ---------- ----------
ALLEN 1600 300
WARD 1250 500
MARTIN 1250 1400
TURNER 1500 0
Q 33.
검색하는 중간에 중복된 데이터가 존재한다면 중복된 데이터를 한번만 출력하기
형식)distinct 중복필드, 성별 -> 중복된 데이터는 한번만
SQL>select distinct job from emp;
JOB
---------
CLERK
SALESMAN
PRESIDENT
MANAGER
ANALYST
Q 34.
emp테이블 에서 업무(job)이 PRESIDENT 이고(and) 급여가 1500 이상 이거나(or) 업무가 SALESMAN인 사원을 찾아서
그 사원의 사번, 이름, 업무, 급여 순으로 출력하는 SQL 작성
연산자 우선순위
( )
연결연산자 ||
관계연산자 >,>=,<,<=, <>, !=, ^=
같지 않다
is [not] null,not like,not in
not between
not 논리연산자
and연산자
or연산자
and > or
and 가 or 보다 먼저 적용됨
SQL>select empno, ename, job, sal from emp where job = 'PRESIDENT' and sal >= 1500 or job = 'SALESMAN';
EMPNO ENAME JOB SAL
---------- ---------- --------- ----------
7499 ALLEN SALESMAN 1600
7521 WARD SALESMAN 1250
7654 MARTIN SALESMAN 1250
7839 KING PRESIDENT 5000
7844 TURNER SALESMAN 1500
SQL>select empno, ename, job, sal from emp where job = 'SALESMAN' or job = 'PRESIDENT' and sal >= 1500;
위 랑 결과 값음 같음 = and가 먼저 실행되기 때문에
SQL>select empno, ename, job, sal from emp where (job = 'SALESMAN' or job = 'PRESIDENT') and sal >= 1500;
괄호가 먼저 실행 됨
EMPNO ENAME JOB SAL
---------- ---------- --------- ----------
7499 ALLEN SALESMAN 1600
7839 KING PRESIDENT 5000
7844 TURNER SALESMAN 1500
Q 35.
emp테이블 에서 이름, 급여, 연봉 순으로 출력하되 고액 연봉자순으로 정렬하시오(=내림차순)
오름차순, 내림차순
형식)select 필드명 from 테이블명 where 조건식 order by 정렬하고자 하는 필드명, 필드명2 [정렬기준] default -> asc
ascending(asc 오름차순) decending(desc 내림차순)
SQL>select ename, sal, sal*12 total from emp order by total desc;
ENAME SAL TOTAL
---------- ---------- ----------
KING 5000 60000
FORD 3000 36000
SCOTT 3000 36000
JONES 2975 35700
BLAKE 2850 34200
CLARK 2450 29400
ALLEN 1600 19200
TURNER 1500 18000
MILLER 1300 15600
WARD 1250 15000
MARTIN 1250 15000
ENAME SAL TOTAL
---------- ---------- ----------
ADAMS 1100 13200
JAMES 950 11400
SMITH 800 9600
Q 36.
emp테이블 에서 먼저 급여가 많은순으로 정렬하되 만약에 sal가 같은 사원이 존재한다면 ename을 내림차순(z->a)으로 정렬하시오
다중정렬 = order by 필드명 asc, 필드명2 desc
SQL>select ename as "irum", sal, sal*12 total from emp order by sal desc, ename desc;
irum SAL TOTAL
---------- ---------- ----------
KING 5000 60000
SCOTT 3000 36000
FORD 3000 36000
JONES 2975 35700
BLAKE 2850 34200
CLARK 2450 29400
ALLEN 1600 19200
TURNER 1500 18000
MILLER 1300 15600
WARD 1250 15000
MARTIN 1250 15000
irum SAL TOTAL
---------- ---------- ----------
ADAMS 1100 13200
JAMES 950 11400
SMITH 800 9600
Q 37.
order by 특징 3가지
1. order by 뒤에 가상필드가 올 수 있다.
2. 다중정렬이 가능한데 순서는 default -> asc
3. select ~ from 에 나오는 필드 순서를 번호로 구분해서 정렬에 사용할 수 있다.(필드명 대신 나오는 순번으로 사용가능)
SQL>select ename as "irum", sal, sal*12 total from emp order by total desc,1 desc;
1 2 3
irum SAL TOTAL
---------- ---------- ----------
KING 5000 60000
SCOTT 3000 36000
FORD 3000 36000
JONES 2975 35700
BLAKE 2850 34200
CLARK 2450 29400
ALLEN 1600 19200
TURNER 1500 18000
MILLER 1300 15600
WARD 1250 15000
MARTIN 1250 15000
irum SAL TOTAL
---------- ---------- ----------
ADAMS 1100 13200
JAMES 950 11400
SMITH 800 9600
********************************************************************************
Q 38.
********************************************************************************
emp테이블 에서 부서번호가 10번인 사원을 찾아서 그 사원들의 사원이름, 급여, 부서번호 순으로 출력하되 급여가 많은순으로 정렬
파라미터 인수질의(query) 검색(=매개변수 질의 검색)
SQL>select ename, sal, deptno from emp where deptno = 10 order by sal desc;
ENAME SAL DEPTNO
---------- ---------- ----------
KING 5000 10
CLARK 2450 10
MILLER 1300 10
SQL>select ename, sal, deptno from emp where deptno = 20 order by sal desc;
ENAME SAL DEPTNO
---------- ---------- ----------
SCOTT 3000 20
FORD 3000 20
JONES 2975 20
ADAMS 1100 20
SMITH 800 20
SQL> select ename, sal, deptno from emp where deptno = &deptno order by sal desc; -> java에서는 ?로 표시(입력 받는다는 표시)
-> &변수명(=필드명) ?
입력받을 부분을 변수명으로 출력
deptno의 값을 입력하시오:[ ]
***************************************************************
자바로 표현한다면
select ename,sal,deptno
from emp
where deptno=?
order by sal desc
insert into member values(?,?,?,?,?,,,,);//java,jsp에서 사용
?=>입력받는 부분을 의미(input type="text")
***************************************************************
Q 39.
위 15번 문제를 save 명령어를 이용해서 저장
SQL>save c:\webtest\2.db\print\deptnosearch.txt
get or @c:\webtest\2.db\print\deptnosearch.txt
Q 40.
dual
= 계산을 한다든지(함수사용), 날짜를 출력, 기본적인 기능
형식) select 함수명() or 함수명(~) from dual;
SQL>select 24*23*13 from dual;
24*23*12
----------
6624
오늘 날짜 출력 -> 회원가입 날짜 -> 내부적으로 자동으로 저장
sysdate <--> now() -> mysql에서의 함수
SQL>select sysdate from dual; -> 오늘 날짜 구하기
SYSDATE
--------
23/05/02
Q 41.
직원 14명중 사원의 이름의 길이가 5자이상인 직원을 검색해서 그 직원의 사번, 이름, 업무순으로 출력
형식)select 함수명(처리해야할 값), 함수명2(~) from 테이블명(dual, 검색대상 테이블) where 조건식 (함수(~))
SQL>select empno, lower(ename) as "소문자로 변환", upper(job) as 대문자로 from emp where length(ename) >= 5;
EMPNO 소문자로 대문자로
---------- ---------- ---------
7369 smith CLERK
7499 allen SALESMAN
7566 jones MANAGER
7654 martin SALESMAN
7698 blake MANAGER
7782 clark MANAGER
7788 scott ANALYST
7844 turner SALESMAN
7876 adams CLERK
7900 james CLERK
7934 miller CLERK
Q 42.
사원검색 -> 사원이름이 전부 대분자 -> 소문자로 입력 -> 검색x
사원명, 급여, 보너스 출력
SQL>select ename, sal, comm from emp where ename = upper('&ename');
ename의 값을 입력하십시오: scott
ENAME SAL COMM
---------- ---------- ----------
SCOTT 3000
Q 43.
문자열 취급 -> 입력한 문자열의 길이
01234567 -> 문자열 취급 -> 인덱스 번호0
'oracletest'
문자열 취급 -> 오라클은 입력순서가 1부터 시작함
형식)substr(대상문자열, 시작위치(1부터), 뽑아낼 문자열 개수)
SQL>select substr('abcde',1,2) from dual;
SU
--
ab
SQL>select substr('abcde',2,3) from dual;
SUB
---
bcd
Q 44.
emp테이블 에서 사원 이름이 'K'보다 크고
'Y'자보다 적은 사원을 검색해서 찾은 사원의 사번, 이름, 업무순으로 출력(단 이름순으로 정렬)
initcap(문자열) -> 첫 글자만 대문자로 출력
SQL>select empno, ename, initcap(ename), job from emp where substr(ename, 1, 1) > 'K' and substr(ename, 1, 1) < 'Y';
EMPNO ENAME INITCAP(EN JOB
---------- ---------- ---------- ---------
7369 SMITH Smith CLERK
7521 WARD Ward SALESMAN
7654 MARTIN Martin SALESMAN
7788 SCOTT Scott ANALYST
7844 TURNER Turner SALESMAN
7934 MILLER Miller CLERK
Q 45.
문자열 검색중 특정문자의 위치를 알려주는 함수(index 번호)
형식)instr(대상 문자열, 찾고자 하는 문자열) -> 위치번호를 알려줌. 못찾으면 0을 리턴
-> indexOf()와 비슷 <->lastIndexOf
SQL>select ename, instr(ename, '0') from emp;
ENAME INSTR(ENAME,'O')
---------- ----------------
SMITH 0 =>못찾았다는 표시
ALLEN 0
WARD 0
JONES 2 =>인덱스 번호 2번째에 찾은 문자있다.
MARTIN 0
BLAKE 0
CLARK 0
SCOTT 3=>3번째
KING 0
TURNER 0
ADAMS 0
ENAME INSTR(ENAME,'O')
---------- ----------------
JAMES 0
FORD 2
MILLER 0
********************************************************************************
Q 46.
중첩함수 : 함수내부에서 또 다른 함수가 있는 형태(실행순서는 내부함수부터 실행)
********************************************************************************
형식) 함수명(함수명())
SQL>select ename, instr(ename, upper('o')) as ins from emp;
ENAME INS
---------- ----------
SMITH 0
ALLEN 0
WARD 0
JONES 2
MARTIN 0
BLAKE 0
CLARK 0
SCOTT 3
KING 0
TURNER 0
ADAMS 0
ENAME INS
---------- ----------
JAMES 0
FORD 2
MILLER 0
날짜 특정해당되는 부분을 출력
SQL>select substr(sysdate, 1, 2) from dual;
Q 47.
숫자함수 = 계산, 반올림, 내림
round() : 반올림 하는 함수
round(반올림할 함수, 반올림할 자릿수);
trunc() : 주어진 숫자를 지정된 자릿수까지 잘라낸 후 반환
trunc(주어진 숫자, 잘라낼 자릿수);
SQL>select round(4567.678), round(4567.678,0), round(4567.678,2), round(4567.678,-2) from dual;
ROUND(4567.678) ROUND(4567.678,0) ROUND(4567.678,2) ROUND(4567.678,-2)
--------------- ----------------- ----------------- ------------------
4568 4568 4567.68 4600
SQL>select trunc(4567.678), trunc(4567.678,0), trunc(4567.678,2), trunc(4567.678,-2) from dual;
TRUNC(4567.678) TRUNC(4567.678,0) TRUNC(4567.678,2) TRUNC(4567.678,-2)
--------------- ----------------- ----------------- ------------------
4567 4567 4567.67 4500
Q 48.
emp테이블 에서 20번 부서에 근무하는 사원의 급여앞에 $를 표시하고 3자리마다 , 를 표시해서 SQL 출력(사번, 이름, 급여, 출력서식)
SQL>select empno, deptno, ename, sal, to_char(sal, '$999,999') from emp where deptno = 20 order by sal desc;
EMPNO DEPTNO ENAME SAL TO_CHAR(S
---------- ---------- ---------- ---------- ---------
7788 20 SCOTT 3000 $3,000
7902 20 FORD 3000 $3,000
7566 20 JONES 2975 $2,975
7876 20 ADAMS 1100 $1,100
7369 20 SMITH 800 $800
SQL>select empno, deptno, ename, sal, to_char(sal, '$999,999') from emp where deptno = &deptno order by sal desc;
deptno의 값을 입력하십시오: 10
구 1: select empno, deptno, ename, sal, to_char(sal, '$999,999') from emp where deptno = &deptno order by sal desc;
신 1: select empno, deptno, ename, sal, to_char(sal, '$999,999') from emp where deptno = 10 order by sal desc;
0
EMPNO DEPTNO ENAME SAL TO_CHAR(S
---------- ---------- ---------- ---------- ---------
7839 10 KING 5000 $5,000
7782 10 CLARK 2450 $2,450
7934 10 MILLER 1300 $1,300
Q 49.
그룹함수 -> 통계처리함수
null값 까지 포함O
총레코드 개수 = count(*) or count(필드명) : 필드에 들어가 있는 레코드수를 체크하는데 필드에 null은 배재(개수에 포함x)
SQL>select count(*) from zipcode;
COUNT(*)
--------
42619
min(필드명) : 최소값, max(필드명) : 최대값, avg(필드명) : 평균값
sum(필드명 : 합계값
SQL>select count(*), trunc(avg(sal)), max(sal), min(sal), to_char(sum(sal), '$999,999') from emp;
COUNT(*) TRUNC(AVG(SAL)) MAX(SAL) MIN(SAL) TO_CHAR(S
---------- --------------- ---------- ---------- ---------
14 2073 5000 800 $29,025
Q 50.
그룹함수의 성격
문제49번에 누가 얼마만큼 받는지 알고 싶다.
SQL>select ename, count(*), trunc(avg(sal)), max(sal), min(sal), to_char(sum(sal), '$999,999') from emp;
select ename, count(*), trunc(avg(sal)), max(sal), min(sal), to_char(sum(sal), '$999,999') from emp
*
1행에 오류:
ORA-00937: 단일 그룹의 그룹 함수가 아닙니다
그룹함수의 특징 : 일반필드와 그룹함수는 같이 사용할 수 없다.
select ~ from 사이에 일반필드와 그룹함수는 같이 사용할 수 없다.
형식)
select
from
where
group by : 그룹을 지어줄 필드명(ex : ename)
order by
SQL>select ename, count(*), trunc(avg(sal)), max(sal), min(sal), to_char(sum(sal), '$999,999') from emp group by ename;
ENAME COUNT(*) TRUNC(AVG(SAL)) MAX(SAL) MIN(SAL) TO_CHAR(S
---------- ---------- --------------- ---------- ---------- ---------
ALLEN 1 1600 1600 1600 $1,600
JONES 1 2975 2975 2975 $2,975
FORD 1 3000 3000 3000 $3,000
CLARK 1 2450 2450 2450 $2,450
MILLER 1 1300 1300 1300 $1,300
SMITH 1 800 800 800 $800
WARD 1 1250 1250 1250 $1,250
MARTIN 1 1250 1250 1250 $1,250
SCOTT 1 3000 3000 3000 $3,000
TURNER 1 1500 1500 1500 $1,500
ADAMS 1 1100 1100 1100 $1,100
ENAME COUNT(*) TRUNC(AVG(SAL)) MAX(SAL) MIN(SAL) TO_CHAR(S
---------- ---------- --------------- ---------- ---------- ---------
BLAKE 1 2850 2850 2850 $2,850
KING 1 5000 5000 5000 $5,000
JAMES 1 950 950 950 $950
Q 51.
emp테이블 에서 급여가 3000 이상인 사원수를 구하기
SQL>select count(*) from emp where sal >= 3000;
COUNT(*)
----------
3
SQL>select ename, sal, count(*) from emp where sal >= 3000 group by ename, sal;
Q 52.
count(*), sum, min, max, avg = 숫자화된 데이터만 사용이 되는건 X, 날짜 문자 데이터도 같이 사용 O
SQL>select min(ename), max(ename), min(hiredate), max(hiredate), min(sal), max(sal) from emp;
MIN(ENAME) MAX(ENAME) MIN(HIRE MAX(HIRE MIN(SAL) MAX(SAL)
---------- ---------- -------- -------- ---------- ----------
ADAMS WARD 80/12/17 87/05/23 800 5000
영문자(a ~ z) 범위 판단
첫번째 영문자가 같으면 두번째 로 판단
두번째도 같으면 세번째로 판단....~
min(hiredate) = 입사일이 가장 적다 = 가장 오래 장기근무자
max(hiredate) = 입사일이 가장 크다 = 가장 짧게한 근무자
Q 53.
부서별로 사원의 수가 4명 이상인 사원의 정보를 찾아서 출력하는 SQL작성
단 출력 순서는 부서번호, 급여의 합계순으로 출력
having : where 에 못쓰는곳에 사용되고 group by 와 함께 사용됨
SQL>select deptno as 부서, count(deptno) as 수, sum(sal) as 합계 from emp group by deptno having count(deptno) >= 4;
'국비학원 > 공부' 카테고리의 다른 글
11일차 oracle(4) (0) | 2023.05.04 |
---|---|
10일차 oracle(3) (1) | 2023.05.04 |
8일차 oracle(1) (0) | 2023.05.04 |
7일차 jsp ~ oracle 설치 (1) | 2023.05.04 |
6일차 jsp(미니 프로젝트) (0) | 2023.04.28 |