개발 공부/Error 정리

SQL 오답

공부하는개발자_ 2023. 6. 16. 10:06

1. 급여가 10000 이상인 사원의 사번, 부서번호, 이름, 급여, 수당을 출력하시오.단, 부서번호가
  30 번,60 번, 90 번인 부서는 제외하고 사원을 검색한다--15건
SELECT employee_id 사번, department_id 부서번호, first_name 이름, salary 급여, commission_pct 수당
FROM employees
WHERE salary>10000 AND NOT(department_id=30 OR department_id=60 OR department_id=90);

              salary>=10000 AND department_id NOT IN (30, 60, 90);

 

 

2.급여가 4000 보다 많은 사원들의 부서별 급여평균를 출력하시오. 단 급여평균은 소숫점이하 2 자리에서 반올림(소숫점이하1자리까지 표현)한다 --12건
SELECT department_id, ROUND(AVG (salary),1)
FROM employees
WHERE salary > 4000
GROUP BY department_id;

 

 

3. 부서배치를 받지 않은 사원은 제외하고 급여평균이 10000 이상인 부서별 급여평균을 출력하시오. --3건

SELECT  department_id, AVG(salary) 
FROM employees
WHERE department_id IS NOT NULL 
GROUP BY department_id;
HAVING AVG(salary) >=10000;

 


SELECT  AVG(salary) 급여평균
FROM employees
WHERE AVG(salary) >=10000
GROUP BY department_id;
HAVING department_id IS NOT NULL 

 

 

4. 'Seattle', 'Toronto'도시에 근무하는 사원들의 근무도시명,사번, 이름, 부서 ID, 부서명 을 출력하시오
SELECT department_id 사번, first_name 이름, e.department_id 부서 ID, department_name 부서명 
FROM employees e
JOIN departments d ON (e.department_id = d.department_id)
JOIN locations l ON (d.location_id = l.location_id)
WHERE l.city IN ('Seattle', 'Toronto');

 

-department_id 가 employees와 department에 있으므로 e와 d 둘다 가능하고 어느 테이블에서 불러올지 설정해주어야함.

 

SELECT department_id 사번, first_name 이름, department_id, departm
FROM locations l
JOIN departments d ON ()
WHERE INSTR(city)

 

 

 

5. 성(last_name)이 'Davies'인 사원과 같은 부서에 근무하는 사원들의 사번, 성, 이름을 출력하시오
Davies는 제외하고 출력한다 --44건
SELECT e.employee_id, e.last_name, e.first_name
FROM employees e JOIN employees d ON (e.department_id = d.department_id)
WHERE d.last_name = 'Davies' AND e.last_name<> 'Davies' ;