连接表格,按日期查询,按字段汇总和按组查询

我有两张表(fuelbus_mileage). 共同点是公交车的名称。

我需要做一个查询,查询巴士和日期的总里程数和燃料使用量。

表(fuel)有这些字段

  • 身份证
  • 巴士
  • 日期
  • 公升
  • 增值税
  • 毛额

表(bus_mileage)有这些字段

  • 身份证
  • 巴士
  • 日期
  • 旅程
  • 服务
  • 启动里程
  • 终点里程
  • nailsea_用户
  • clevedon_用户
  • portishead_用户
  • 其他用户
  • 总里程
  • 总行程

我的查询。

SELECT
  f.ID,
  f.bus,
  f.litres,
  f.Gross,
  fuel,
  b.id,
  b.bus,
  b.total_miles,
  b.total_journeys bus_mileage SUM(total_miles) as 'total_miles',
  SUM(total_miles * 1.60) as 'total KM',
  (SUM(portishead_user) + SUM(clevedon_user) + SUM(nailsea_user) + SUM(other_user)) as 'Total Journeys' SUM(litres) as 'fuel Litres',
  SUM(Gross) as 'Gross Value',
  SUM(net) as 'Net Value',
  SUM(VAT) as 'VAT Value',
  (SUM(litres) / SUM(Gross)) as 'Total MPG'
FROM fuel f
INNER JOIN bus_mileage b on f.bus = b.bus
WHERE date BETWEEN '2019-09-01' AND '2020-03-31'
group by bus 

解决方案:

假设每个表的每条公交车和日期都有多条记录,基本的思路是在子查询中进行汇总,然后将它们连接在一起。

就像这样。

select f.bus, f.bus_date, f.fuel_usage, m.mileage 
from (
    select bus, date(fuel_date) bus_date, sum(litres) fuel_usage
    from fuel f
    group by bus, date(fuel_date)
) f
inner join (
    select bus, date(mileage_date) bus_date, sum(end_mileage - start_mileage) mileage
    from bus_mileage m
    group by bus, date(mileage_date)
) m
    on f.bus = m.bus and f.bus_date = m.bus_date

我把这个表改名为 date 列,所以它们是什么更明显–我认为它们实际上是属于 datetime 数据类型:

给TA打赏
共{{data.count}}人
人已打赏
未分类

使一些DataGrid单元格跨越多列。

2022-9-8 23:28:41

未分类

从MATLAB到Python的数据集

2022-9-8 23:39:37

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索