도시 x와 y 사이 또는 그 반대로의 총 이동 시간을 계산하는 방법
의문
당신은 항공사에서 일하고 있고 파일럿의 도시 간 이동 시간 데이터 세트를 받았습니다. 역수를 결정하고 도시 간의 총 이동 시간을 찾아야 합니다. 즉, 조종사가 '1'에서 '2'로 이동하고 도시 '2'에서 '1'로 이동한 거리를 하나로 간주하여 총 이동 시간을 계산해야 합니다.
예상 출력을 달성하기 위해 SQL 쿼리를 작성하십시오.
대답
먼저 테스트 데이터를 생성해 보겠습니다.
--create test data
USE demo;
CREATE TABLE dbo.travel_detail (
id int identity(1,1),
from_city varchar(100),
to_city varchar(100),
travel_time_hours smallint
)
GO
INSERT INTO dbo.travel_detail values
('Oslo','Helsinki',125),
('Helsinki','Oslo',110),
('Stockholm','Oslo',132),
('Oslo','Stockholm',180),
('Copenhagen','Helsinki',148),
('Helsinki','Copenhagen',84),
('Stockholm','Copenhagen',116),
('Helsinki','Stockholm',124)
GO
SELECT * FROM dbo.travel_detail
--clean up
--USE demo;
--DROP TABLE dbo.travel_detail
원하는 결과를 얻으려면 순서에 따라 행 내에서 도시 이름을 바꿔야 합니다. 즉, from_city 및 to_city 이름을 오름차순 또는 내림차순으로 연속 정렬한 다음 첫 번째 도시를
city_1
로 유지하고 다른 도시를 city_2로 유지할 수 있습니다. 이렇게 하려면 from_city
및 to_city
에서 보다 작거나 보다 큼 > 연산자를 사용할 수 있습니다.이렇게 하면
travel_time_hours
및 city_1
를 그룹화하여 city_2
를 집계할 수 있습니다.--solution
USE demo;
select
city_1,
city_2,
total_travel_hours = sum(travel_time_hours)
from (
select
city_1 = case when from_city < to_city then from_city else to_city end,
city_2 = case when from_city > to_city then from_city else to_city end,
travel_time_hours
from dbo.travel_detail
)x
group by city_1, city_2
order by city_1, city_2
이것이 내가 생각해 낸 해결책입니다. 다른 방법으로 결과를 얻으셨다면 댓글로 알려주세요.
Sign up 이 인터뷰 질문을 받은 편지함으로 직접 받으십시오.
Reference
이 문제에 관하여(도시 x와 y 사이 또는 그 반대로의 총 이동 시간을 계산하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/rajanand/how-to-calculate-total-travel-hours-between-city-x-and-y-and-vice-versa-1bc6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)