[TIL] MySQL Subquery와 Join (24-12-17)

2024. 12. 17. 16:51·TIL (Today I Learned)

🤖 사전 캠프 7일차 진행 사항 🤖

  • 엑셀보다 쉽고 빠른 SQL 4주차 수업
    • 4-1 ~ 4-7
    • 숙제
  • Java 알고리즘 문제 풀이
    • 1로 만들기

엑셀보다 쉽고 빠른 SQL 4주차 수업

1. Subquery

더보기

Subquery가 필요한 경우

  • 여러번의 연산을 수행해야 할 때
  • 조건문에 연산 결과를 사용해야 할 때
  • 조건에 Query 결과를 사용하고 싶을 때

  • [실습] 음식점의 지역과 평균 배달시간으로 segmentation 하기 
    • 테이블? ==> from food_orders
    • 컬럼? ==> restaurant_name, addr, delivery_time
    • 조건? ==> 없음
    • 수식? ==> avg(delivery_time), substring(addr, 1, 2)
    • 그룹화 ==> group by restaurant_name, addr
    • 평균 배달시간 출력 조건 ==> case when ~
select restaurant_name,
       sido,
       case when avg_time<=20 then '<=20'
            when avg_time>20 and avg_time <=30 then '20<x<=30'
            when avg_time>30 then '>30' end time_segment
from 
(
    select restaurant_name,
           substring(addr, 1, 2) sido,
           avg(delivery_time) avg_time
    from food_orders
    group by 1, 2
) a

2. Join

더보기

Join이 필요한 경우

  • 여러 테이블에 저장된 데이터를 효과적으로 검색하기 위해 사용

 

2-1. OUTER JOIN

  • 공통 컬럼을 기준으로, 하나의 테이블에 값이 없더라도 모두 조회
    • LEFT OUTER JOIN: 왼쪽 테이블의 모든 값이 출력되는 조인
    • RIGHT OUTER JOIN: 오른쪽 테이블의 모든 값이 출력되는 조인
    • FULL OUTER JOIN: 왼쪽 외부 조인과 오른쪽 외부 조인이 합쳐진 것 (MySQL에서는 지원하지 않음)
-- LEFT JOIN
select 조회 할 컬럼
from 테이블1 a left join 테이블2 b on a.공통컬럼명=b.공통컬럼명

 

 

2-2. INNER JOIN

  • 공통 컬럼을 기준으로, 두 테이블 모두에 있는 값만 조회
-- INNER JOIN
select 조회 할 컬럼
from 테이블1 a inner join 테이블2 b on a.공통컬럼명=b.공통컬럼명

 

참고 및 이미지 출처 : https://hongong.hanbit.co.kr/sql-%EA%B8%B0%EB%B3%B8-%EB%AC%B8%EB%B2%95-joininner-outer-cross-self-join/

 

SQL 기본 문법: JOIN(INNER, OUTER, CROSS, SELF JOIN)

조인은 두 개의 테이블을 서로 묶어서 하나의 결과를 만들어 내는 것을 말한다. INNER JOIN(내부 조인)은 두 테이블을 조인할 때, 두 테이블에 모두 지정한 열의 데이터가 있어야 한다.OUTER JOIN(외부

hongong.hanbit.co.kr


  • [실습] 고객의 주문 식당 조회하기
    • 조회 컬럼 : 고객 이름, 연령, 성별, 주문 식당
    • 고객 이름으로 정렬 / 중복이 없도록 조회
    • 테이블? ==> from food_orders f left join customers c on f.customer_id = c.customer_id
    • 컬럼? ==> c.name, c.age, c.gender, f.restaurant_name
    • 조건? ==> x
    • 정렬? ==> order by c.name
    • 중복이 없도록 조회 ==> distinct c.name
select distinct c.name,
       c.age,
       c.gender,
       f.restaurant_name
from food_orders f left join customers c on f.customer_id=c.customer_id
order by c.name

3. 숙제

더보기

 식당별 평균 음식 주문 금액과 주문자의 평균 연령을 기반으로 Segmentation 하기

  • 평균 음식 주문 금액 기준 : 5,000 이하 / ~10,000 / ~30,000 / 30,000 초과
  • 평균 연령 : ~ 20대 / 30대 / 40대 / 50대 이상
  • 두 테이블 모두에 데이터가 있는 경우만 조회, 식당 이름 순으로 오름차순 정렬
  1. SQL 기본구조 적어보기
  2. 각 테이블에서 필요한 컬럼 정리하기
  3. Join 문으로 데이터 조회문 적어보기
  4. 데이터를 연산해보기
  5. 연산한 데이터를 segmentation 에 활용하기

Java 알고리즘 문제 풀이

https://mannakingdom.tistory.com/50

 

백준 Java ) 1463번 1로 만들기

https://www.acmicpc.net/problem/1463 import java.io.*;import java.util.*;public class Main { static Integer[] dp; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n =

mannakingdom.tistory.com

저작자표시 비영리 변경금지 (새창열림)

'TIL (Today I Learned)' 카테고리의 다른 글

[TIL] Java 알고리즘 문제 풀이 (24-12-19)  (1) 2024.12.19
[TIL] MySQL Window Function과 Date타입 포맷팅 (24-12-18)  (1) 2024.12.18
[TIL] MySQL 숫자 연산, GROUP BY, ORDER BY, 문자열 연산, 조건문 함수 학습 (24-12-16)  (0) 2024.12.16
[TIL] NoSQL_Firebase 설정/적용하기, Github로 배포하기 (24-12-13)  (2) 2024.12.13
[TIL] JSON과 javascript fetch함수, Bootstrap 및 Google fonts 적용 과제 (24-12-12)  (4) 2024.12.12
'TIL (Today I Learned)' 카테고리의 다른 글
  • [TIL] Java 알고리즘 문제 풀이 (24-12-19)
  • [TIL] MySQL Window Function과 Date타입 포맷팅 (24-12-18)
  • [TIL] MySQL 숫자 연산, GROUP BY, ORDER BY, 문자열 연산, 조건문 함수 학습 (24-12-16)
  • [TIL] NoSQL_Firebase 설정/적용하기, Github로 배포하기 (24-12-13)
기만나🐸
기만나🐸
공부한 내용을 기록합시다 🔥🔥🔥
  • 기만나🐸
    기만나의 공부 기록 🤓
    기만나🐸
  • 전체
    오늘
    어제
    • ALL (147)
      • TIL (Today I Learned) (56)
      • Dev Projects (15)
      • Algorithm Solving (67)
        • Java (52)
        • SQL (15)
      • Certifications (8)
        • 정보처리기사 실기 (8)
  • 인기 글

  • 태그

    sql
    완전탐색
    프로그래머스
    DFS
    GROUP BY
    그리디
    jQuery
    websocket
    programmers
    join
    javascript
    greedy
    BOJ
    백준
    bootstrap
    CSS
    Google Fonts
    dp
    시뮬레이션
    jpa
    Firebase
    java
    BFS
    HTML
    백트래킹
    mysql
    jwt
    자료구조
    다이나믹프로그래밍
    Subquery
  • 최근 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
기만나🐸
[TIL] MySQL Subquery와 Join (24-12-17)
상단으로

티스토리툴바