如何在一个查询中获取不同时间段的总和

时间:2014-04-28 07:53:35

标签: php mysql sum

查询1:

SELECT SUM(duration) FROM table_name WHERE timestart >= past24hours

查询2:

SELECT SUM(duration) FROM table_name WHERE timestart >= past7days

大家好,我想结合以上两个查询并在查询中得到总和。 有什么办法吗?

目前我在过去的30天和365天内还有2个以上的查询。

任何人都请帮忙。

3 个答案:

答案 0 :(得分:1)

您可以使用union

喜欢

SELECT SUM(duration) FROM table_name WHERE timestart >= past24hours
UNION
SELECT SUM(duration) FROM table_name WHERE timestart >= past7days

答案 1 :(得分:0)

SELECT SUM(duration), 1 FROM table_name WHERE timestart >= '$date' - INTERVAL 1 DAY
UNION
SELECT SUM(duration), 2 FROM table_name WHERE timestart BETWEEN '$date' - INTERVAL 7 DAY AND '$date' - INTERVAL 1 DAY

这样你就不会在过去的24小时内获得两次时间的行

答案 2 :(得分:0)

一种方法是使用不同的别名获得所有总和为

select
t.sum1,t.sum2
from(
select 
 sum(case when timestart >= past24hours then duration END) as sum1,
 sum(case when timestart >= past7days then duration END) as sum2  
 from table_name
)t

您可以在查询中添加任意数量的总和,并提供别名并将其添加到选择列表中,以便稍后可以使用服务器端脚本对其进行解析。

使用UNION,它将返回相同的column/alias。如果UNION中的总和值相同,那么它只会获得一个并且要摆脱它,您可以使用UNION ALL