분류 전체보기 230

[SQL] LEFT JOIN 과 INNER JOIN 차이 2

지난번 답하지 못했던 질문을 이어서 작성 https://lyj-01.tistory.com/6 LEFT JOIN 과 INNER JOIN 차이식당별 평균 음식 주문 금액과 주문자의 평균 연령을 기반으로 Segmentation 하기 - 평균 음식 주문 금액 기준 : 5,000 / 10,000 / 30,000 / 30,000 초과 - 평균 연령 : ~ 20대 / 30대 / 40대 / 50대 이상 -- 내가 작성lyj-01.tistory.com  Q. 이 데이터 중에 왜 'wichcraft' 행만 출력이 되었는지?Q. GROUP BY 를 하지 않았을 경우 1개의 행만 추출을 하는데 왜일까?       Q. LEFT JOIN 한 값과, INNER JOIN 한 값은 어떤..

개인공부 2024.03.22

2024-03-21

1. 오늘 배운 것 날짜 추출 예시) 2022년 9월 데이터값 ① BETWEEN '2022-09-01' AND '2022-09-30' ② LIKE '2022-09%' ① 의 경우 30일과 31일을 잘못 작성할 경우 조회가 되지 않더라.. ② 의 경우 9월 이후의 값을 불러주기 때문에 훨씬 간편! 날짜 차이 구하기 MySQL 에서는 날짜 차이를 구하기 위해 DATEDIFF, TIMESTAMPDIFF 함수를 사용 간단하게 day 의 차이를 구할 때에는 DATEDIFF 함수를 사용 DATEDIFF(날짜1,날짜2) 날짜1 - 날짜2 TIMESTAMPDIFF(단위, 날짜1, 날짜2) SECOND: 초 MINUTE: 분 HOUR: 시 DAY: 일 WEEK: 주 MONTH: 월 QUARTER: 분기 YEAR: 연 2..

TIL 2024.03.21

자동차 대여 기록에서 장기/단기 대여 구분하기

CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 대여 시작일이 2022년 9월에 속하는 대여 기록에 대해서 대여 기간이 30일 이상이면 '장기 대여' 그렇지 않으면 '단기 대여' 로 표시하는 컬럼(컬럼명: RENT_TYPE)을 추가하여 대여기록을 출력하는 SQL문을 작성해주세요. 결과는 대여 기록 ID를 기준으로 내림차순 정렬해주세요. SELECT history_id , car_id , SUBSTR(start_date, 1, 10) start_date , SUBSTR(end_date, 1, 10) end_date , CASE WHEN CAST((end_date) AS decimal) - CAST((start_date) AS decimal) >= 30 THEN '장기대여' ELSE ..

SQL 코드카타 2024.03.21

조건에 맞는 도서 리스트 출력하기

BOOK 테이블에서 2021년에 출판된 '인문' 카테고리에 속하는 도서 리스트를 찾아서 도서 ID(BOOK_ID), 출판일 (PUBLISHED_DATE)을 출력하는 SQL문을 작성해주세요. 결과는 출판일을 기준으로 오름차순 정렬해주세요. SELECT book_id , DATE_FORMAT(published_date, '%Y-%m-%d') PUBLISHED_DATE FROM book WHERE published_date BETWEEN '2021-01-01' AND '2021-12-31' AND category = '인문' ORDER BY published_date + 어제 코드카타 하면서 공부했던 DATE_FORMAT 함수를 사용해보았다 Q. DATE_FORMAT 의 사용법은 어떻게 될까? A. %Y 20..

SQL 코드카타 2024.03.20

2024-03-20

1. 오늘 배운 것 Subquery 연산이 여러번 필요할 경우, 연산결과를 반복해서 적어줘야 할 경우에 사용할수 있는 구문 음식 주문시간이 25분보다 초과한 시간을 가져오기 select order_id, restaurant_name, if(over_time>=0, over_time, 0) over_time -- 25분-25분=0분으로 25분초과 이기 때문에 >= from ( select order_id, restaurant_name, food_preparation_time-25 over_time -- 25분 초과 이기 때문에 -25 from food_orders ) a + 주문 시간이 25분보다 초과 이기 때문에 주문시간 컬럼에서 25분을 빼준다 서브쿼리내로만 할 경우 초과되지 않는 주문건들은 - 값을 ..

TIL 2024.03.20

[SQL] LEFT JOIN 과 INNER JOIN 차이

식당별 평균 음식 주문 금액과 주문자의 평균 연령을 기반으로 Segmentation 하기- 평균 음식 주문 금액 기준 : 5,000 / 10,000 / 30,000 / 30,000 초과- 평균 연령 : ~ 20대 / 30대 / 40대 / 50대 이상 -- 내가 작성한 쿼리문SELECT restaurant_name , CASE WHEN AVG(A_price) 5000 AND AVG(A_price) 10000 AND AVG(A_price) 30000 THEN 'price_group4' END "평균음식주문금액" , CASE WHEN AVG(A_age) -- 학습자료의 쿼리문select restaurant_name, case whe..

개인공부 2024.03.20

특정 옵션이 포함된 자동차 리스트 구하기

CAR_RENTAL_COMPANY_CAR 테이블에서 '네비게이션' 옵션이 포함된 자동차 리스트를 출력하는 SQL문을 작성해주세요. 결과는 자동차 ID를 기준으로 내림차순 정렬해주세요. SELECT * FROM CAR_RENTAL_COMPANY_CAR WHERE options LIKE '%네비게이션%' -- = 과 LIKE 가 매번 헷갈림.. = 은 완전히 일치할때, LIKE 는 저런 단어가 있을때 출력? ORDER BY car_id DESC 단어를 찾을때 = 과 LIKE 구문이 매번 헷갈림 = : 완전히 일치하는 단어 LIKE : 부분적으로 일치하는 단어 다른 풀이 방식 WHERE INSTR(options, '네비게이션') > 0

SQL 코드카타 2024.03.19

조건에 부합하는 중고거래 댓글 조회하기

USED_GOODS_BOARD와 USED_GOODS_REPLY 테이블에서 2022년 10월에 작성된 게시글 제목, 게시글 ID, 댓글 ID, 댓글 작성자 ID, 댓글 내용, 댓글 작성일을 조회하는 SQL문을 작성해주세요. 결과는 댓글 작성일을 기준으로 오름차순 정렬해주시고, 댓글 작성일이 같다면 게시글 제목을 기준으로 오름차순 정렬해주세요. SELECT title , ub.board_id , ur.reply_id , ur.writer_id , ur.contents , ub.created_date FROM used_goods_board ub INNER JOIN used_goods_reply ur ON ub.writer_id = ur.writer_id WHERE ub.created_date BETWEEN '..

SQL 코드카타 2024.03.19

2024-03-19

1. 오늘 배운 것 특정문자를 다른 문자로 바꾸기 REPLACE(바꿀 컬럼, 현재 값, 바꿀 값) 원하는 문자만 남기기 SUBSTR(조회 할 컬럼, 시작 위치, 글자 수) + 글자 수를 지정하지 않을 경우 끝까지 추출 여러 컬럼의 문자를 합치기 CONCAT(붙이고 싶은 값1, 붙이고 싶은 값2, 붙이고 싶은 값3, ...) GROUP BY 서울 지역의 음식 타입별 평균 음식 주문금액 구하기 SELECT SUBSTR(addr, 1, 2) "시도" , cuisine_type "음식 종류" , AVG(price) "평균 금액" FROM food_orders WHERE addr LIKE '%서울%' GROUP BY 1, 2 + select 절에 있는 순서 숫자대로 그룹화 할 수있음 + 그룹화도 여러개 가능 ‘[..

TIL 2024.03.19

2024-03-18

1. 오늘 배운 것 엑셀보다 쉽고 빠른 SQL - 1주차 SQL : 데이터베이스와 대화를 하기 위한 언어 데이터베이스 : 데이터가 저장되어있는 큰 폴더 SELECT : 데이터를 가져오는 명령어 FROM : 데이터를 가져올 테이블을 특정해주는 문법 * : 모든 컬럼을 가져와준다 별명(alias)지정 AS 는 없어도 괜찮음 특수문자, 한글 : "별명" , 큰 따옴표 안에 적어줌 영문, 언더바 : 별명만 적음 WHERE : 원하는 데이터만 필터링 문자를 사용 할 때는 '' 작은 따옴표 같지않다(다르다) LIKE : 비슷한 조건인 모든 값 상품 준비시간이 20~30분 사이인, 한국음식점의 식당명과 고객번호 조회하기 테이블명 : food_orders 컬럼명 : restaurant_name (식당명) custome..

TIL 2024.03.18