SQL 3주차 스터디 정리

Jihoon·2022년 12월 10일
0

DB & SQL Study

목록 보기
1/8
post-thumbnail
post-custom-banner

암기내용


DATE_FORMAT(DATE_OF_BIRTH, '%Y-%m-%d') AS DATE_OF_BIRTH
  • DATETIME 형식을 년, 월, 일로 변형해서 제출해라는 문제들이 SELELCT 문제에서 많이 보임

  • 그러나, Mysql에서는 TO_CHAR가 더 이상 지원이 안되는지, 구글링에서는 해당 답이 있는데 적용이 안됨

  • 이 형식은 필수적으로 암기 필요

WHERE MONTH(DATE_OF_BIRTH) = 3 AND GENDER = 'W' AND TLNO IS NOT NULL
  • Null 값을 제외한 체로 테이블의 값을 가져오고 싶을 때는 WHERE절에 IS NOT NULL을 이용해야 함

  • 이 역시 암기가 필요함


프로그래머스 LV4 문제

🎈서울에 위치한 식당 목록 출력하기


SELECT A.REST_ID, B.REST_NAME, B.FOOD_TYPE, B.FAVORITES, B.ADDRESS, ROUND(AVG(A.REVIEW_SCORE),2) AS SCORE
FROM REST_REVIEW A
JOIN REST_INFO B ON A.REST_ID = B.REST_ID
GROUP BY A.REST_ID
HAVING B.ADDRESS LIKE '서울%'
ORDER BY SCORE DESC, B.FAVORITES DESC
  • SELECT
  • SELECT : JOIN하려면 어느 테이블에 있는 컬럼인건지 A.REST_ID와 같이 표시가 필요함
  • ROUND : 소수점 표시, AVG : 평균값, AS : 컬럼명 변경
  • SELECT문에도 이와 같이 함수를 적용할 수 있음
  • JOIN
  • FROM, JOIN, ON 순서 기억
  • ON에 조건 걸어주기
  • GROUP BY

위와 같이 식당의 이름을 기준으로 그룹화 시킴 (중복제거)
AVG과 같은 그룹화 함수와 같이 많이 사용됌

  • HAVING

Group by의 기준을 설정하는 문

  • 주소가 서울로 시작하는 식당 다 뽑아오기
  • 서울만 해당되면 되므로 '서울%' 이와 같이 표시
  • ORDER BY

정렬할 때도 어떤 테이블에 있는 컬럼인지 명확히 표기해주기

  • ORDER BY SCORE DESC, B.FAVORITES DESC

🎈오프라인/온라인 판매 데이터 통합하기


SELECT DATE_FORMAT(SALES_DATE, '%Y-%m-%d') as SALES_DATE, PRODUCT_ID, USER_ID, SALES_AMOUNT
FROM ONLINE_SALE
WHERE MONTH(SALES_DATE) = 3

union all

SELECT DATE_FORMAT(SALES_DATE, '%Y-%m-%d') as SALES_DATE, PRODUCT_ID, NULL as USER_ID, SALES_AMOUNT
FROM OFFLINE_SALE 
WHERE MONTH(SALES_DATE) = 3

ORDER BY SALES_DATE, PRODUCT_ID, USER_ID
  • UNION ALL

두 테이블의 결과를 합쳐주는 것 (JOIN X)

  • 병합이 아님
  • 각각의 결과를 합쳐주는 것
  • 조건
  1. SELECT : 두 테이블에서 같은 컬럼을 갖고와야됌
  2. 없는 컬럼은 NULL as USER_ID 처럼 NULL 을 시켜줘야 함
  • UNION

중복을 제거한 체로 쿼리를 합칠 수 있음


🎈재구매가 일어난 상품과 회원 리스트 구하기

SELECT USER_ID,PRODUCT_ID
FROM ONLINE_SALE
GROUP BY USER_ID,PRODUCT_ID
HAVING count(*) >= 2
ORDER BY USER_ID, PRODUCT_ID DESC
  • HAVING count(*) >= 2

groupby 된 테이블에서 개수 조건 거는 것


Study 회고 12/11

  • 알게 된 것들
  1. LEFT 컬럼명 3 왼쪽에서 몇번째까지 짤라라
    LEFT(컬럼, 10) DATETIME TYPE
  2. %
  3. SUBSET -- slicing
  • 다들 잘 준비해오고, 발표와 공유를 통해서 같이 성장하는 느낌을 받아서 좋다. 네이버 부캠에서 진행한 피어세션 방식 도입하는게 진짜 좋은 것 같다.

  • DB책을 통해서 DB 관련 이론 학습 및 SQL 공부를 함께 진행하면 시너지 효과가 크게 날 것 같다. 책을 구매하자. (정한 책)


참고 사이트

profile
장난감이 데이터인 사람
post-custom-banner

0개의 댓글