한화시스템 BEYOND SW 캠프 2기 5일차(23.11.03)

강지흔·2023년 11월 6일
0

sql 문법

  1. ORDER BY : 출력 결과를 오름차순 정렬, 내림차순 정렬

    salaries 테이블에서 salary를 기준으로 오름차순 정렬해서 emp_no, salary를 조회

    SELECT emp_no, salary
    FROM salaries
    ORDER BY salary;

    salaries 테이블에서 salary를 기준으로 내림차순 정렬해서 emp_no, salary를 조회

    SELECT emp_no, salary
    FROM salaries
    ORDER BY salary DESC;

    salaries 테이블에서 salary를 기준으로 오른차순차순 정렬해서

    emp_no, salary를 조회하는데 salary가 같으면 from_date를 기준으로 오름차순 정렬
    SELECT emp_no, salary, from_date
    FROM salaries
    ORDER BY salary, from_date;

  1. GROUP BY : 특정 속성별로 묶어서 결과를 조회할 때

    salaries 테이블에서 emp_no 별 최고 salary를 조회

    SELECT emp_no, MAX(salary)
    FROM salaries
    GROUP BY emp_no;

    employees 테이블에서 남, 여 사원의 수를 출력

    SELECT gender, COUNT(emp_no)
    FROM employees
    GROUP BY gender;

  2. 함수 : AVG()평균, MAX()최대값, MIN()최소값, COUNT()카운트 등

  3. HAVING : WHERE와 비슷한데 GROUP BY로 묶은 값에 대해서 조건으로 조회할 때

    emp_no가 15000 이상인 사원들 중에서

    사원 별 급여의 평균이 80000이 넘는 사원의 emp_no와 평균 급여를 출력하시오.

    SELECT emp_no, AVG(salary)
    FROM salaries
    WHERE emp_no >= 15000
    GROUP BY emp_no
    HAVING AVG(salary) > 80000;

    Engineer 직군의 직급 별 사원의 수가 90000 초과인 직급을 출력하시오.

    SELECT title, COUNT(emp_no)
    FROM titles
    WHERE title LIKE '%Engineer%'
    GROUP BY title
    HAVING COUNT(emp_no) > 90000;

  4. IN : IN으로 지정된 값들 중에 있는 것만 조회

    직급 'Senior Engineer', 'Engineer', 'Assistant Engineer'인 사람들 중에서

    emp_no와 title을 출력하시오.

    SELECT emp_no, title
    FROM titles
    WHERE title IN ('Senior Engineer', 'Engineer', 'Assistant Engineer');

  5. JOIN : 두 개의 테이블을 하나의 테이블로 합치는 기능(INNER, LEFT OUTER, RIGHT OUTER)

    employees 테이블의 emp_no와 dept_emp테이블의 emp_no가 같은 값들을 기준으로

    두 테이블을 하나로 합쳐서 모든 속성들을 출력

    SELECT *
    FROM employees
    LEFT OUTER JOIN dept_emp
    ON employees.emp_no = dept_emp.emp_no;

  1. 서브 쿼리 : SELECT문 안에서 SELECT를 한 번 더 사용하는 것
    SELECT 속성
    FROM 테이블
    WHERE 조건 서브 쿼리가 가능한 곳
    HAVING 조건
    ORDER BY 속성

**프로그래머스 sql LV.4
우유와 요거트 문제

데이터 분석 팀에서는 우유(Milk)와 요거트(Yogurt)를 동시에 구입한 장바구니가 있는지 알아보려 합니다. 우유와 요거트를 동시에 구입한 장바구니의 아이디를 조회하는 SQL 문을 작성해주세요. 이때 결과는 장바구니의 아이디 순으로 나와야 합니다.

SELECT cart_id
from CART_PRODUCTS
where name in ('milk') and cart_id in (select cart_id
from CART_PRODUCTS
WHERE NAME IN ('YOGURT'))
ORDER BY CART_ID;

서브쿼리를 사용하여 요거트를 산 사람의 아이디 중 우유를 산 사람의 아이디 조회

0개의 댓글