2024/02 17

c++ algorithm 관련 함수들

sort()로 정렬하기 - sort(v.begin(), v.end()) 하면 오름차순 정렬, sort(v.rbegin(), v.rend()) 하면 내림차순 정렬 - sort(v.begin(), v.end(), compare) 해서 사용자 정의 비교함수 정의해도 됨, 리턴타입 bool인 함수 정의 bool compare(pair a, pair b) { if(a.second == b.second) { return a.first b.second; } max element 구하기 - max_element(start, end)를 이용하면 [start, end) 범위 중에 가장 큰 값의 iterator를 반환 - *max_element(start, end)를 ..

web/알고리즘 2024.02.11

프로그래머스 SQL 고득점 Kit - STRING, DATE

1. 자동차 대여 기록에서 장기/단기 대여 구분하기 SELECT HISTORY_ID, CAR_ID, DATE_FORMAT(START_DATE, "%Y-%m-%d") AS START_DATE, DATE_FORMAT(END_DATE, "%Y-%m-%d") AS END_DATE, IF(DATEDIFF(END_DATE, START_DATE) >= 29, "장기 대여", "단기 대여") AS RENT_TYPE FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY WHERE START_DATE BETWEEN '2022-09-01' AND '2022-09-30' ORDER BY HISTORY_ID DESC // 대여 시작일이 2022년 9월에 속하는 대여 기록에 대해서 대여 기간이 30일 이상이면 '..

web/SQL 2024.02.10

프로그래머스 SQL 고득점 Kit - JOIN

1. 주문량이 많은 아이스크림들 조회하기 SELECT F.FLAVOR FROM FIRST_HALF F LEFT JOIN ( SELECT FLAVOR, SUM(TOTAL_ORDER) AS TOTAL_ORDER FROM JULY GROUP BY FLAVOR ) AS J ON F.FLAVOR = J.FLAVOR ORDER BY (F.TOTAL_ORDER+IFNULL(J.TOTAL_ORDER,0)) DESC LIMIT 3 // 7월 아이스크림 총 주문량과 상반기의 아이스크림 총 주문량을 더한 값이 큰 순서대로 상위 3개의 맛을 조회하는 SQL 문 - JULY 테이블에서는 FLAVOR 외래키에 대해 그룹화를 해주어야 하며 - 7월에 안팔렸지만 상반기에서는 팔린 맛이 있을 수 있기에 IFNULL 처리를 해주었음 2..

web/SQL 2024.02.10

프로그래머스 SQL 고득점 Kit - GROUP BY

1. 즐겨찾기가 가장 많은 식당 정보 출력하기 SELECT R.FOOD_TYPE, R.REST_ID, R.REST_NAME, R.FAVORITES FROM REST_INFO R JOIN ( SELECT FOOD_TYPE, MAX(FAVORITES) AS FAVORITES FROM REST_INFO GROUP BY FOOD_TYPE ) AS F ON (R.FOOD_TYPE = F.FOOD_TYPE AND R.FAVORITES = F.FAVORITES) ORDER BY R.FOOD_TYPE DESC // 음식종류별로 즐겨찾기수가 가장 많은 식당의 음식 종류, ID, 식당 이름, 즐겨찾기수를 조회하는 SQL문 - GROUP BY를 통해 음식 종류별 MAX FAVORITES 수를 구할 수 있고, 이를 기반으로 ..

web/SQL 2024.02.08

프로그래머즈 SQL 고득점 Kit - SUM, MAX, MIN, ISNULL

1. 가격이 제일 비싼 식품의 정보 출력하기 SELECT * FROM FOOD_PRODUCT ORDER BY PRICE DESC LIMIT 1 - 혹은 서브쿼리와 MAX()를 이용해 풀 수도 있다 SELECT * FROM FOOD_PRODUCT WHERE PRICE = (SELECT MAX(PRICE) FROM FOOD_PRODUCT) 2. 가장 비싼 상품 구하기 SELECT MAX(PRICE) AS MAX_PRICE FROM PRODUCT 3. 최댓값, 최솟값 구하기 SELECT MAX(DATETIME) AS 시간 FROM ANIMAL_INS // 혹은 MIN(DATETIME) 4. 동물 수 구하기 SELECT COUNT(*) AS count FROM ANIMAL_INS 5. 중복 제거하기 SELECT..

web/SQL 2024.02.08

프로그래머스 SQL 고득점 Kit - SELECT

1. 평균 일일 대여 요금 구하기 SELECT ROUND(AVG(DAILY_FEE),0) as AVERAGE_FEE FROM CAR_RENTAL_COMPANY_CAR WHERE CAR_TYPE = 'SUV' - ROUND( 숫자|컬럼 등 , 자릿수 ) : 반올림하여 소숫점 아래 해당 자릿수까지 표 - AVG 함수 : 평균 구하기, 평균 구할 때 NULL 있다면 IFNULL(DAILY_FEE,0) 이런 식으로 넣어주어야 함 - 그룹별 평균 구하기 : SELECT job, AVG(sal) as avg_sal FROM emp GROUP BY job , 참고로 as는 컬럼명 지정 - 조건절 다양한 방법들 : WHERE CAR_TYPE IN ('SUV') , LIKE 'SUV' , REGEXP '^SUV$' 2...

web/SQL 2024.02.06