[11일차] - SQL

Woozy9ucci·2022년 11월 3일
0

SQL

  • SELECT
    내가 조회 할 컬럼
  • 집계 함수
    SUM, AVG, COUNT, MAX, MIN
  • FROM
    어느 테이블에서
  • WHERE
    조건절
    null 은 is not null, is null
  • like
    where절과 함께 쓰이며 = 과 다르게 '%serchText%' 와 같이 검색의 용도로 사용한다.
  • in
    where절과 함께 쓰이며
    WHERE a.user_id in ('abc', 'def')
    등과 같이 여러 특정 값을 주고 싶을 때 사용한다.
  • GROUP BY
    그룹핑
  • ORDER BY
    정렬 (Desc, default = asc)
  • as
    Alias 별칭
    as를통해 출력될 필드에 별칭, or table 옆에 a 와같이
  • JOIN
    left, right, inner, outter
    테이블을 연결시키는데 공통된 값을 가진 컬럼이 있어야함.
  • UNION ALL
    우주 대통합 정렬이 깨지는데 서브쿼리로 해결 가능
  • limit
    갯수 조절 (숫자와 함께 사용)
  • case
    경우에 따라 원하는 값 붙이기
    end 꼭 붙여주기
select pu.point_user_id, pu.point,
case 
when pu.point > 10000 then '잘 하고 있어요!'
else '조금 더 달려주세요!'
END as '구분'
from point_users pu;
  • 문자열 다루기
    SUBSTRING_INDEX(email, '@', -1), SUBSTRING()
    SUBSTRING(created_at, 부터, 만큼)

subquery

서브쿼리는 select절, where절, from절에 들어갈 수 있다.

  • with
    with 절로 내가만든 테이블을 실제 테이블처럼 사용할 수 있음
    union all 시 깨지는 정렬 등도 이로 해결할 수 있음
with table1 as (select enrolled_id ,count(*) as total_cnt from enrolleds_detail ed 
group by enrolled_id), table2 as(select enrolled_id ,count(*) as done_cnt from enrolleds_detail ed 
WHERE done = 1
group by enrolled_id )
select a.enrolled_id, b.done_cnt, a.total_cnt, (b.done_cnt/a.total_cnt) as ratio  from table1 a
join table2 b on a.enrolled_id = b.enrolled_id

0개의 댓글