mysql计算结果是一样的

标签 mysql database

我有以下查询:

select v.vehicle_id, 
       v.year, 
       v.make, 
       v.model, 
       v.mileage, 
       count(distinct o.order_id) as order_number, 
       sum(s.labor_hour*labor_cost_per_hour+part_cost) * 
       count(distinct vo.order_id) as vehicle_cost

   from tbl_vehicle_order vo
  inner join tbl_vehicle v 
    on vo.vehicle_id = v.vehicle_id
  inner join tbl_order o
    on vo.order_id = o.order_id
  natural join tbl_customer c
  natural join tbl_service s
  natural join tbl_rate r
where 
      s.rate_id = r.rate_id 
  and vo.order_id = o.order_id 
  and vo.vehicle_id=v.vehicle_id
group by v.vehicle_id;

结果是这样的 => enter image description here

更新: 在我编辑代码后,结果似乎没有改变太多。 这是更新后的代码:

 select v.vehicle_id, v.year, v.make, v.model, v.mileage, count(vo.order_id) as order_number, sum(s.labor_hour*r.labor_cost_per_hour+s.part_cost) as vehicle_cost
 from tbl_vehicle_order vo, tbl_vehicle v,tbl_order o,tbl_customer c,tbl_service s,tbl_rate r, tbl_order_service os
 where vo.order_id = o.order_id and vo.vehicle_id = v.vehicle_id and os.service_id = s.service_id and s.rate_id = r.rate_id
 group by v.vehicle_id
 order by 1;

更新结果: enter image description here

我认为我的计算部分有一些错误。有人愿意指出我的错误吗?谢谢!

最佳答案

你可以试试这个。它假定您在其他 question 中描述的模式

SELECT v.vehicle_id, 
       v.year, 
       v.make, 
       v.model, 
       v.mileage, 
       COUNT(DISTINCT vo.order_id) as unique_orders, 
       SUM(order_summation.order_cost) as sum_of_all_orders
FROM tbl_vehicle_order vo
INNER JOIN tbl_vehicle v 
  ON vo.vehicle_id = v.vehicle_id
JOIN (
    SELECT os.order_id as order_id
      , SUM(s.part_cost + s.labor_hour*r.labor_cost_per_hour) AS order_cost
    FROM order_service AS os
    JOIN service AS s
     ON os.service_id = s.service_id
    JOIN tbl_rate AS r
     ON r.rate_id = s.rate_id
    GROUP BY os.order_id) AS order_summation
  ON order_summation.order_id = vo.order_id
GROUP BY v.vehicle_id, 
         v.year, 
         v.make, 
         v.model, 
         v.mileage;

关于mysql计算结果是一样的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22640270/

相关文章:

java - 为什么这个值是空的?

mysql - mysql中特定条件的总和

mysql - 在多个表中快速搜索特定数据,然后引用主表

mysql - Onsen UI 使用 Angular 从 mysql 登录验证后,如何显示我的主屏幕?

java - 使用 JTable 和列按钮从数据库中删除正确的行时出现问题

android - 尝试打开sqlite数据库后,我的android应用程序崩溃

sql - 数据库设计: Users with roles and profiles with fields for each role

Mysql 加入 - 返回两倍于预期的数字

mysql - MySQL View 是在文件系统上创建和存储的,还是总是在运行时创建的

php - 将第二个表的最新行连接到第一个表的每一行