목록mysql (52)
컴공생의 다이어리
[SQL] WITH 절 WITH 절은 복잡한 쿼리문에서 반복되는 서브쿼리를 임시 테이블처럼 활용할 수 있는 가상 테이블의 개념이다. 일종의 이름을 붙인 서브쿼리라고 할 수 있다. 주요 RDBMS(MySQL, Oracle, Postgresql...)에서 제공하는 기능이다. WITH 절을 사용하면 반복되는 블록을 재사용함으로써 코드 가독성을 높일 수 있으며 실행 속도 시간을 최적화할 수 있다. WITH 절은 아래와 같이 별칭(서브쿼리의 이름)을 지정하고 별칭에 해당하는 쿼리문을 지정해주면된다. WITH 별칭1 AS (SELECT 문), 별칭2 AS (SELECT 문) ... SELECT FROM 별칭1, 별칭2 ...; # example WITH LIST AS ( SELECT * FROM TEST_TB WH..
[MySQL] 한번에 여러개의 데이터 삽입(insert) 첫번째로 VALUES 로 아래와 같이 여러 데이터를 한번에 삽입하는 방법이 있다. INSERT INTO TEST (col1, col2, ...) VALUES ('v1', 'v2', ...), ('v1', 'v2', ...), ... ('v1', 'v2', ...); 두번째로 SELECT 문을 활용하여 SELECT 된 결과를 삽입 방법이 있다. 여러 테이블의 결과를 단일 테이블에 저장하거나 하나의 테이블의 일부 컬럼을 조회하여 저장하는 경우에 활용된다. INSERT INTO TEST SELECT * FROM TEMP WHERE 조건; SELECT INTO TEST SELECT A, B, C, D FROM TEMP WHERE 조건;
[프로그래머스] 오프라인/온라인 판매 데이터 통합하기 - MySQL SELECT DATE_FORMAT(SALES_DATE, '%Y-%m-%d') AS SALES_DATE, PRODUCT_ID, USER_ID, SALES_AMOUNT FROM ( SELECT SALES_DATE, PRODUCT_ID, USER_ID, SALES_AMOUNT FROM ONLINE_SALE UNION ALL SELECT SALES_DATE, PRODUCT_ID, NULL AS USER_ID, SALES_AMOUNT FROM OFFLINE_SALE ) T WHERE SALES_DATE LIKE '2022-03%' ORDER BY SALES_DATE, PRODUCT_ID, USER_ID; https://school.programm..
[프로그래머스] 성분으로 구분한 아이스크림 총 주문량 - MySQL SELECT INGREDIENT_TYPE, SUM(TOTAL_ORDER) AS TOTAL_ORDER FROM FIRST_HALF INNER JOIN ICECREAM_INFO ON FIRST_HALF.FLAVOR = ICECREAM_INFO.FLAVOR GROUP BY INGREDIENT_TYPE ORDER BY TOTAL_ORDER ASC; https://school.programmers.co.kr/learn/courses/30/lessons/133026 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmer..
[프로그래머스] 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기 - MySQL SELECT MONTH(START_DATE) AS MONTH, CAR_ID, COUNT(HISTORY_ID) AS RECORDS FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY WHERE CAR_ID IN ( SELECT CAR_ID FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY WHERE DATE_FORMAT(START_DATE,'%Y-%m') BETWEEN '2022-08' AND '2022-10' GROUP BY CAR_ID HAVING COUNT(CAR_ID) >= 5 ) AND DATE_FORMAT(START_DATE,'%Y-%m') BETWEEN '2022-08' AN..
[프로그래머스] 자동차 대여 기록 별 대여 금액 구하기 - MySQL WITH RENT_INFO AS ( SELECT HISTORY_ID, DATEDIFF(END_DATE, START_DATE) + 1 AS RENT_DAYS, DAILY_FEE, CAR_TYPE, CASE WHEN DATEDIFF(END_DATE, START_DATE) + 1 >= 90 THEN '90일 이상' WHEN DATEDIFF(END_DATE, START_DATE) + 1 >= 30 THEN '30일 이상' WHEN DATEDIFF(END_DATE, START_DATE) + 1 >= 7 THEN '7일 이상' ELSE '' END AS DURATION_TYPE FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY..
[프로그래머스] 가격이 제일 비싼 식품의 정보 출력하기 - MySQL SELECT * FROM FOOD_PRODUCT WHERE PRICE = (SELECT MAX(PRICE) FROM FOOD_PRODUCT); https://school.programmers.co.kr/learn/courses/30/lessons/131115 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr
[프로그래머스] 5월 식품들의 총매출 조회하기 - MySQL SELECT P.PRODUCT_ID, P.PRODUCT_NAME, SUM(O.AMOUNT * P.PRICE) AS TOTAL_SALES FROM FOOD_ORDER O JOIN (SELECT * FROM FOOD_PRODUCT) P ON O.PRODUCT_ID = P.PRODUCT_ID WHERE O.PRODUCE_DATE LIKE '2022-05%' GROUP BY P.PRODUCT_ID ORDER BY TOTAL_SALES DESC, P.PRODUCT_ID; https://school.programmers.co.kr/learn/courses/30/lessons/131117 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프..
[프로그래머스] 주문량이 많은 아이스크림들 조회하기 - MySQL SELECT F.FLAVOR FROM FIRST_HALF F LEFT JOIN ( SELECT FLAVOR, SUM(TOTAL_ORDER) AS TOTAL_ORDER FROM JULY GROUP BY FLAVOR ) J ON F.FLAVOR = J.FLAVOR ORDER BY (F.TOTAL_ORDER + J.TOTAL_ORDER) DESC LIMIT 3; https://school.programmers.co.kr/learn/courses/30/lessons/133027 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. pr..
[프로그래머스] 상품 별 오프라인 매출 구하기 - MySQL SELECT P.PRODUCT_CODE, SUM(O.SALES_AMOUNT)*P.PRICE AS SALES FROM PRODUCT P JOIN OFFLINE_SALE O ON P.PRODUCT_ID=O.PRODUCT_ID GROUP BY P.PRODUCT_CODE ORDER BY SALES DESC, P.PRODUCT_CODE; https://school.programmers.co.kr/learn/courses/30/lessons/131533 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr