Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- TiL
- 오블완
- 실전 데이터 분석 프로젝트
- 스파르타 코딩
- 프로젝트
- harkerrank
- 내일배움카드
- 티스토리챌린지
- 파이썬 철저입문
- 파이썬 머신러닝 완벽가이드
- 스파르타
- 어쩌다 마케팅
- 프로그래머스
- 파이썬
- R
- 회귀분석
- SQL
- MySQL
- 스파르타코딩
- 중회귀모형
- wil
- 파이썬 머신러닝 완벽 가이드
- 텍스트 분석
- 미세먼지
- Cluster
- 내일배움캠프
- 파이썬 철저 입문
- 웹 스크랩핑
- hackerrank
- 내일배움
Archives
- Today
- Total
OkBublewrap
기계당 평균 처리 시간 본문
기계당 평균 처리 시간
문제
각 기계가 프로세스를 완료하는 데 걸리는 평균 시간을 구하는 해결책 쿼리를 작성
입력 테이블
Activity
machine_id
process_id
activity_type
timestamp
풀이
1. machine_id별 process_id별 end-start 구하기
lead() : 다음행 값 가져오기
partition by : machine_id별, process_id별 집계
order by : 'start' 명시적으로 1 지정 'end' 명시적 2 지정
select *,
lead(timestamp) over (partition by machine_id, process_id order by
CASE WHEN activity_type = 'start' THEN 1
WHEN activity_type = 'end' THEN 2
END ASC) - timestamp as time_diff
from Activity
2. GROUP BY 및 집계 함수 사용
avg(time_diff)
를 사용해 machine_id별 평균 구하기
select machine_id, round(avg(time_diff), 3) as processing_time
from
(
select *,
lead(timestamp) over (partition by machine_id, process_id order by activity_type asc) - timestamp as time_diff
from Activity
) a
group by machine_id
'개발 > SQL' 카테고리의 다른 글
1934. Confirmation Rate (0) | 2025.01.21 |
---|---|
1280. Students and Examinations (0) | 2025.01.20 |
상승하는온도 (0) | 2025.01.16 |
대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기 (0) | 2025.01.15 |
자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기 (0) | 2025.01.14 |