gpt4 book ai didi

mysql - 选择总计作为同一个表中的三个字段作为一个查询?

转载 作者:行者123 更新时间:2023-11-29 08:28:24 25 4
gpt4 key购买 nike

我有一个表,里面有各种订单:

ID | Date       | etc...
1 | 2013-01-01 | etc
2 | 2013-02-01 | etc
3 | 2013-03-01 | etc
4 | 2013-04-01 | etc
5 | 2013-05-01 | etc
6 | 2013-06-01 | etc
7 | 2013-06-01 | etc
8 | 2013-03-01 | etc
9 | 2013-04-01 | etc
10 | 2013-05-01 | etc

我想要一个以结果结尾的查询:

overallTotal | totalThisMonth | totalLastMonth
10 | 2 | 1

但我想在一个查询中完成此操作!我正在尝试找到一种使用子查询来执行此操作的方法。到目前为止我已经:

SELECT * from (
SELECT count(*) as overallTotal from ORDERS
)

如何将其与其他子查询结合起来,以便在一个查询中获得总计?

更新

最初的问题是针对 MySQL 的,但我现在需要针对 Firebird。

最佳答案

使用条件求和你可以做到这一点(MySQL语法):

select 
count(*) as overallTotal,
sum(if(Month(Date)+12*Year(Date)=Month(GetDate())+12*Year(GetDate()), 1, 0))
as totalThisMonth
sum(if(Month(Date)+12*Year(Date)=Month(GetDate())+12*Year(GetDate())-1, 1, 0))
as totalThisMonth;
from mytable

使用月+12*年公式可以避免年份变化的问题。

更新

对于Firebird同样适用,您只需将Month(x)替换为EXTRACT (MONTH FROM x) Year(x)EXTRACT (YEAR FROM x)Getdate()CURRENT_TIME。这看起来很难看,所以我不会把它放在这里,但你可以轻松地自己做。

关于mysql - 选择总计作为同一个表中的三个字段作为一个查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17340471/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com