Employee
테이블에는 직원들의 급여 정보가 들어 있다. 이 중 두 번째로 높은(distinct) 급여를 구하는 SQL 쿼리를 작성하라.
null
을 반환해야 한다.SecondHighestSalary
이어야 한다.MAX(salary)
)를 먼저 구한다.null
이 반환됨.SELECT MAX(salary) AS SecondHighestSalary
FROM Employee
WHERE salary < (SELECT MAX(salary) FROM Employee);
SELECT MAX(salary)
:MAX()
를 사용.WHERE salary < (...)
:MAX()
는 하나의 값만 반환하므로 DISTINCT
가 없어도 작동엔 문제 없음.Activities
테이블에는 제품이 판매된 날짜와 제품명이 들어 있다.
각 날짜별로 판매된 고유한 제품의 수(num_sold) 와,
판매된 제품들의 이름을 사전순으로 정렬하여 쉼표로 이어붙인 문자열(products) 을 구하라.
출력 컬럼:
sell_date
: 판매일num_sold
: 고유하게 판매된 제품의 수products
: 판매된 제품명들을 알파벳 순으로 정렬해 쉼표로 구분한 문자열SELECT
sell_date,
COUNT(DISTINCT product) AS num_sold,
GROUP_CONCAT(DISTINCT product ORDER BY product SEPARATOR ',') AS products
FROM Activities
GROUP BY sell_date
ORDER BY sell_date;
COUNT(DISTINCT product)
→ 날짜별로 중복되지 않는 제품 수를 센다.
GROUP_CONCAT(DISTINCT product ORDER BY product SEPARATOR ',')
→ 제품들을 알파벳순으로 정렬 후, 쉼표로 연결해서 문자열로 만든다.
GROUP BY sell_date
→ 날짜별로 그룹을 묶는다.
ORDER BY sell_date
→ 결과를 날짜 기준으로 정렬한다.
문제:
최소직사각형
문제설명:
명함의 가로·세로 크기가 담긴 리스트 sizes
가 주어질 때,
모든 명함을 수납할 수 있는 가장 작은 지갑의 크기를 구하는 문제.
핵심은 명함을 회전시켜서 세로/가로를 바꿔 넣을 수 있다는 점을 이용하는 것.
내 정답:
def solution(sizes):
max_w = 0 # 지갑 가로 길이 후보
max_h = 0 # 지갑 세로 길이 후보
for w, h in sizes:
w, h = max(w, h), min(w, h) # 항상 큰 쪽을 가로, 작은 쪽을 세로로 정렬
max_w = max(max_w, w)
max_h = max(max_h, h)
return max_w * max_h
정답 쿼리 설명:
for w, h in sizes
→ 모든 명함의 가로/세로를 하나씩 꺼내서 반복
w, h = max(w, h), min(w, h)
→ 회전시킬 수 있으니까 항상 큰 쪽을 가로(w
), 작은 쪽을 세로(h
)로 정렬
max_w = max(max_w, w)
→ 지금까지 나온 가로 길이 중 가장 큰 것 저장
max_h = max(max_h, h)
→ 지금까지 나온 세로 길이 중 가장 큰 것 저장
return max_w * max_h
→ 결국 가장 큰 가로, 세로를 곱하면 최소 지갑 크기 완성
예시 실행:
print(solution([[60, 50], [30, 70], [60, 30], [80, 40]])) # 출력: 4000
print(solution([[10, 7], [12, 3], [8, 15], [14, 7], [5, 15]])) # 출력: 120
print(solution([[14, 4], [19, 6], [6, 16], [18, 7], [7, 11]])) # 출력: 133
→ 정리하자면. 이상치(Anomaly)란 일반적인 패넡에서 벗어난 소수의 특이한 데이터이며, 이를 빠르고 정확하게 찾는 것이 핵심
이상탐지 접근 방법
특징 | 지도학습 | 비지도학습 |
---|---|---|
장점 | 정확한 라벨 기반 → 더 높은 분류 정확도 기대 | 라벨 없이도 모델 가능, 다양한 환경에 적용 가능 |
단점 | 이상치 라벨 수집 어려움, 불균형 데이터 문제 | 이상 탐지 기준 설정 모호, 정밀도 튜닝 필요 |
Isolation Forest (비지도 이상탐지 가능)
IsolationForest
클래스로 간단하게 사용 가능LOF (Local Outlier Factor)
One-Class SVM
알고리즘 | 방식 | 특징 및 장점 | 단점 |
---|---|---|---|
Isolation Forest | 트리 기반 | 빠르고 확장성 좋음, 해석 가능 | 파라미터 민감 |
LOF | 밀도 기반 | 국소 밀도 비교로 미묘한 이상 탐지 | predict() 불가 |
One-Class SVM | 커널 기반 | 비선형 이상 탐지, 결정경계 학습 | 느림, 고차원에 약함 |
contamination
등)에 따라 결과가 많이 달라질 수 있음