gpt4 book ai didi

sql - 将 datepart() 与 group by 命令一起使用

转载 作者:行者123 更新时间:2023-12-02 17:47:52 26 4
gpt4 key购买 nike

我正在用我的头去对抗一些我确信非常明显的东西 -

我有一些 SQL 代码,旨在对商店中每张发票的总售价进行求和,然后按月进行组织。

select SUM(totalsellingprice) from dbo.tblServiceOrders
where datepart(MONTH,dbo.tblServiceOrders.datereceived) =12

据我了解,这应该返回 12 月(12 月)以来所有总销售价格的总和。目前,此查询返回

135998.92

但是,如果我随后尝试将其放入一个组中,让它在所有月份中都吐出它,则数字会发生变化。

select SUM(totalsellingprice) from dbo.tblServiceOrders
group by datepart(MONTH,dbo.tblServiceOrders.datereceived)

我得到了这张 table -

 1 - 110567.70
2 - 60059.59
3 - 135998.92
4 - 63089.22
5 - 102287.01
6 - 71088.68
7 - 149102.10
8 - 67722.65
9 - 67122.45
10 - 64234.82
11 - 7542.05
12 - 130461.10

有 12 行,这对我来说听起来不错(一年 12 个月),但最后一行是 130461。

第二次搜索中的第 12 行怎么可能不等于我在第一次搜索中所做的?我觉得我错过了一些明显的东西,但我一生都无法弄清楚是什么。

任何和所有的帮助将不胜感激!

最佳答案

我明白了:

您的查询非常困惑,因为它不包含 MONTH 列:

如果您这样做,您就会意识到您的查询不是按月份排序的,因此,月份 12 将作为查询的第三行返回。

;)

select SUM(totalsellingprice) from dbo.tblServiceOrders
group by datepart(MONTH,dbo.tblServiceOrders.datereceived)
order by datepart(MONTH,dbo.tblServiceOrders.datereceived)

请不要引用行索引来选择哪个月份与哪个总和相关。并且区分年份应该是一个好主意(如果需要的话)。

关于sql - 将 datepart() 与 group by 命令一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13957170/

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