使用MySQL创建视图中的Sum列

时间:2016-12-06 18:05:35

标签: mysql sum aggregate-functions

我试图创建一个视图,显示当月的所有滞纳金,但也会计算结果底部的滞纳金。

这是我写的脚本,用于显示滞纳金的详细信息:

select g.game_id, g.game_name, 
       if(datediff(r.return_date, r.due_date) > 0, 
           datediff(r.return_date, r.due_date) * g.overdue_charge_per_day,
           0) as Total_Overdue_Charges_MTD     
from rental as r
left join game as g
on r.game_id = g.game_id
where month(r.return_date)=month(now())

这给了我以下输出:

game_id game_name Total_Overdue_Charges_MTD    
  6       GTA V              4.00
  7       Tony Hawk          15.00

我已将此视图命名为overduepaymentMTD。

我希望输出看起来像

game_id game_name Total_Overdue_Charges_MTD Total    
  6       GTA V              4.00            19.00
  7       Tony Hawk          15.00

有没有办法在视图中包含total_overdue_charges_MTD的总和?

2 个答案:

答案 0 :(得分:0)

您可以轻松插入视图。它具有与插入表格相同的语法。使用以下查询将帮助您做您想做的事情

insert into overduepaymentMTD(game_name,Total_Overdue_Charges_MTD)
select "Total" as game_name,sum( if(datediff(r.return_date, r.due_date) > 0, datediff(r.return_date, r.due_date) * g.overdue_charge_per_day, 0))as Total_Overdue_Charges_MTD from rental as r left join game as g on r.game_id = g.game_id where month(r.return_date)=month(now())

要使用此查询game_id,game_name必须具有默认值,或者您必须在查询中为它们添加值。

答案 1 :(得分:0)

我无法弄清楚如何做到这一点,而是创建了当月的逾期费用视图,然后总结了过期费用。