Tags
- N:1
- SQL
- 이진트리
- stack
- Django
- 뷰
- 쟝고
- Vue
- 그리디
- create
- 완전검색
- 백트래킹
- M:N
- drf
- regexp
- 통계학
- count
- Tree
- outer join
- 큐
- migrations
- ORM
- DB
- Article & User
- 스택
- update
- distinct
- delete
- 트리
- Queue
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Notice
Recent Posts
Link
데이터 분석 기술 블로그
Average Time of Process per Machine _ Easy. leetcode 본문
SELECT
A1.machine_id,
ROUND(AVG(A2.timestamp - A1.timestamp), 3) AS processing_time
FROM Activity A1
INNER JOIN Activity A2
ON
A1.machine_id = A2.machine_id
AND
A1.process_id = A2.process_id
WHERE
A1.activity_type = 'start'
AND
A2.activity_type = 'end'
GROUP BY
A1.machine_id;
Solution
SELECT
A1.machine_id,
ROUND(AVG(A2.timestamp - A1.timestamp), 3) AS processing_time
FROM Activity A1
INNER JOIN Activity A2
ON
A1.machine_id = A2.machine_id
AND
A1.process_id = A2.process_id
WHERE
A1.activity_type = 'start'
AND
A2.activity_type = 'end'
GROUP BY
A1.machine_id;
생각보다 복잡했지만 차근차근 정리해 보면 다음과 같다:
- 먼저 A1의 테이블에는 start만, A2의 테이블에는 end만 추출해서 JOIN을 해야겠다고 생각했다.
- machine_id와 process_id가 같은 것 끼리 모아야 하므로 JOIN 조건으로 두 개의 테이블에서 각각 id가 같도록 JOIN 한다.
- 'end' timestamp - 'start' timestamp를 계산하면 다음과 같이 나온다:
- 그다음 machine_id끼리 GROUP BY를 하고 AVG를 통해 평균값을 계산했다.
'SQL > 문제풀이' 카테고리의 다른 글
많이 주문한 테이블 찾기 _ Lv1 * (0) | 2024.09.26 |
---|---|
자동차 대여 기록에서 장기/단기 대여 구분하기 _ Lv1. 프로그래머스 * (0) | 2024.09.25 |
Weather Observation Station 5 _ Easy. HackerRank * (0) | 2024.09.23 |
첫 주문과 마지막 주문 _ Lv1 (0) | 2024.09.22 |
특정 옵션이 포함된 자동차 리스트 구하기 _ Lv1. 프로그래머스 (0) | 2024.09.21 |