https://leetcode.com/problems/average-time-of-process-per-machine/
문제
machine_id와 기계 종류별로 처리 평균 시간을 구하면 되는 문제로 평균 시간은 소수 3째자리에서 반올림해주어야 한다.
방법1
select machine_id,
round(sum(case when activity_type = 'start' then - timestamp else timestamp end) / count(distinct process_id), 3) as processing_time
from Activity
group by machine_id;
방법2
테이블을 두 개로 분리해서 푸는 방법
SELECT a.machine_id,
ROUND(AVG(b.timestamp - a.timestamp), 3) AS processing_time
FROM Activity a,
Activity b
WHERE
a.machine_id = b.machine_id
AND
a.process_id = b.process_id
AND
a.activity_type = 'start'
AND
b.activity_type = 'end'
GROUP BY machine_id
방법3
셀프 조인을 해서 푸는 방법
Select a.machine_id ,
ROUND(avg(b.timestamp - a.timestamp),3) as processing_time
FROM Activity as a
JOIN Activity as b
ON a.machine_id = b.machine_id
and a.process_id = b.process_id
and a.activity_type = 'start'
and b.activity_type = 'end'
GROUP BY a.machine_id;
[MySQL] SELF JOIN 셀프 조인을 쓰는 이유
JOIN 1) 우리에게 다음과 같은 MONKEYS 테이블과 FRUITS 테이블이 주어졌습니다. create table MONKEYS ( id, tutor_id, favorite_fruit_id, type, monkey_nm, training_status ); create table FRUITS ( id, fruit_nm, origin, price ); 이로부터
co1nam.tistory.com
참고.
'DATA > SQL' 카테고리의 다른 글
SQL: Leet code 문제풀이(570, 1934, 620) (0) | 2025.01.23 |
---|---|
SQL: LAG 함수 활용하여 현재 데이터와 이전 데이터를 비교 (1) | 2025.01.09 |
241211 SQL 코드카타(조건에 맞는 사용자 정보 조회하기, 조건에 부합하는 중고거래 상태 조회하기, 취소되지 않은 진료 예약 조회하기) (3) | 2024.12.11 |
SQL 코드카타 풀이(없어진 기록 찾기, 과일로 만든 아이스크림 고르기, 재구매가 일어난 상품과 회원 구하기) (1) | 2024.12.10 |