首页 > 解决方案 > 使用 MySQL 在给定表中查找具有起始位置和目的地位置的城市的出现

问题描述

我正在尝试解决这个问题,但我无法取得很大进展。我被困在如何列出仅属于原始位置而不是目标位置的元素,反之亦然。

表名称:出货量

Shipment_ID 挑个日子 交货日期 原产地 目的地位置
101 2020 年 1 月 1 日 2020 年 2 月 10 日 底特律 西雅图
102 2020 年 1 月 2 日 2020 年 1 月 10 日 西雅图 洛杉矶
103 2020 年 1 月 1 日 2020 年 2 月 10 日 洛杉矶 纽约市
104 2020 年 2 月 10 日 2020 年 3 月 14 日 纽约市 纽约市
105 2020 年 1 月 3 日 2020 年 3 月 11 日 洛杉矶 西雅图
106 2020 年 1 月 2 日 2020 年 2 月 10 日 达拉斯 波特兰

答案:最终模式

地点 总皮卡 总交付量
底特律 1 0
西雅图 1 2
洛杉矶 2 1
纽约市 1 2
达拉斯 1 0
波特兰 0 1

标签: mysqlsqljoinunion

解决方案


我倾向于这样做:

select location,
       sum(is_origin) as pickups,
       sum(is_destination) as deliveries
from ((select origin as location, 1 as is_origin, 0 as is_destination
       from shipments
      ) union all
      (select destination as location, 0 as is_origin, 1 as is_destination
       from shipments
      )
     ) od
group by location;

不需要额外JOIN的。


推荐阅读