본문 바로가기

분류 전체보기

(184)
SQL 고득점 kit(IS NULL) - 업그레이드 할 수 없는 아이템 구하기 -- 풀이 쿼리 -- 다른 아이템의 PARENT_ITEM인 아이템들은 더 이상 업그레이드가 불가능하다. SELECT ITEM_ID , ITEM_NAME , RARITY FROM ITEM_INFO I WHERE I.ITEM_ID NOT IN ( SELECT DISTINCT PARENT_ITEM_ID FROM ITEM_TREE WHERE PARENT_ITEM_ID IS NOT NULL ) ORDER BY ITEM_ID DESC; - 풀이 쿼리에 써 놓은 것처럼, '더 이상 업그레이드가 불가능한 아이템'을 어떻게 필터링할지에 대한 조건만 명확히 이해한다면 어렵지 않은 문제다. https://school.programmers.co.kr/questions/72364
[MySQL] WITH RECURSIVE 구문 SQL에서 재귀 쿼리 짤 때 사용하는 구문이다. 구문 작성하는 방법이 좀 독특한데, 아래와 같다. WITH RECURSIVE cte_count AS ( -- Non-Recursive 문장( 첫번째 루프에서만 실행됨 ) SELECT 1 AS n UNION ALL -- Recursive 문장(읽어 올 때마다 행의 위치가 기억되어 다음번 읽어 올 때 다음 행으로 이동함) SELECT n + 1 FROM cte_count WHERE n < 3 ) SELECT * FROM cte_count; 1. 메모리 상에 가상의 테이블을 저장한다. 2. 반드시 UNION 사용해야한다. 3. 최소한 하나의 비반복문(Non-Recursive)이 있어야 한다. 처음 한번만 실행된다. 4. 서브쿼리에서 바깥의 가상의 테이블을 참조하..
SQL 고득점 kit(GROUP BY) - 입양 시각 구하기(2) 처음에 문제만 읽었을 때엔 아니 띠용? 이렇게 쉬운 문제가 Lv 4? 라고 생각했으나, 예시 답안을 보니 Lv4일만 했다. 기록이 없는 빈 시간대의 데이터도 만들어야 했기 때문이다. 참고로 입양 시각 구하기(1) 문제는, 같은 것을 구하되 기록이 없는 빈 시간대는 고려할 필요가 없던 문제였고, Lv2 문제였다. 그래서 간단히 휘리릭 풀었었다. SELECT HOUR(DATETIME) AS HOUR , COUNT(*) AS COUNT FROM ANIMAL_OUTS GROUP BY HOUR ORDER BY HOUR 그런데, 기록 없는 빈 시간대의 데이터도 있어야 한다는 저 조건 하나만으로 Lv이 2단계나 뛴다? => 지금까지의 SQL 코테 풀이 짬으로 보아하니, 이건 문가 대단하게 어려운 쿼리를 짜야 풀린다기..
SQL 고득점 kit(GROUP BY) - 년, 월, 성별 별 상품 구매 회원 수 구하기 -- 풀이 쿼리 SELECT YEAR(O.SALES_DATE) AS YEAR , MONTH(O.SALES_DATE) AS MONTH , U.GENDER , COUNT(DISTINCT U.USER_ID) AS USERS FROM USER_INFO U JOIN ONLINE_SALE O ON U.USER_ID = O.USER_ID WHERE GENDER IS NOT NULL GROUP BY YEAR, MONTH, GENDER ORDER BY YEAR, MONTH, GENDER - Lv 4 짜리 문제였지만 그다지 어려운 문제는 아니다. 조건만 잘 맞춰주면 된다. - 단, 풀이에서 사용한 YEAR(), MONTH()등의 함수는 MySQL 외에 다른 DBMS에선 안 먹힐 수도 있으니, EXTRACT나 DATE_TR..
[AI 엔지니어 기초 다지기] 19일차 [24.02.16] 5주차 23차시 - 최적화(2) Regularization : 학습에 규제를 걸어서 데이터 학습이 잘 되지 않도록 하는 것. 그렇게 함으로써 모델 혹은 방법론이 학습데이터에만 잘 동작하는 것이 아니라 테스트 데이터, 혹은 그 외의 데이터에 대해서도 잘 동작하도록 하는 것. 즉, Overfitting을 방지하는 것이 목적이다. 아래와 같이 다양한 방법이 있다. 1. Early Stopping - Test data가 아닌, 그 외의 데이터로 validation data set을 구축하고 해당 데이터셋에 대해서 error가 더 이상 줄어들지 않을 때에 학습을 종료하는 것. 말 그대로 조기 종료하는 것이다. n번의 epoch 학습 동안 모델 성능이 나아지지 않는다면 학습을 종료하는 방식으로 ..
[AI 엔지니어 기초 다지기] 18일차 [24.02.15] 5주차 22차시 - 최적화(1) 최적화Optimization 기본 용어들 1. 일반화Generalization 1) 학습된 모델이 다른 새로운 데이터에 관해서도 잘 작동하도록 하는 것(How well the learned model will behave on unseen data). 학습 Iteratiion이 늘어남으로 인해 무조건 training error가 낮아진다고 해서 test error도 낮아진다는 보장이 없기 때문. 2) Generalization gap : 학습 데이터와 테스트 데이터의 에러 차이(성능차이). 이를 Generalization performance라고도 한다. 2. Underfitting vs Overfitting 1) 학습 데이터에 대해서는 잘 동작하지만(..
SQL 고득점 kit(GROUP BY) - 식품분류별 가장 비싼 식품의 정보 조회하기 # 풀이 쿼리 SELECT CATEGORY , PRICE AS MAX_PRICE , PRODUCT_NAME FROM ( SELECT CATEGORY , PRICE , PRODUCT_NAME , DENSE_RANK() OVER (PARTITION BY CATEGORY ORDER BY PRICE DESC) AS RANKING FROM FOOD_PRODUCT WHERE CATEGORY IN ('과자', '국', '식용유', '김치') ) AS B WHERE RANKING = 1 ORDER BY MAX_PRICE DESC 1. 카테고리 별 금액 기준으로 순서를 매긴 후 2. 1등인 품목들만 가져온다. 그리 어렵진 않았다. 그런 만큼, 서너개의 풀이법이 더 있을 것으로 예상한다.
SQL 고득점 kit(GROUP BY) - 성분으로 구분한 아이스크림 총 주문량 -- 정답 쿼리 SELECT I.INGREDIENT_TYPE , SUM(TOTAL_ORDER) AS TOTAL_ORDER FROM FIRST_HALF F LEFT JOIN ICECREAM_INFO I ON F.FLAVOR = I.FLAVOR GROUP BY I.INGREDIENT_TYPE LEVEL 2 다운 쉬운 문제였다. 해설은 따로 하지 않는다.