【问题标题】:How to SUM the data properly? [closed]如何正确求和数据? [关闭]
【发布时间】:2021-11-12 06:22:54
【问题描述】:

有问题我无法以正确的方式汇总数据。不知道是什么问题以及为什么查询没有汇总所有信息。 这是查询:

select m.store, SUM(s.salePrice) as Price ,s.Date, d.name
from market m
inner join distributor d on d.marketId = m.marketId
inner join sales s on s.distributorId = d.distributorId
group by s.Date,m.store,d.name

查询结果:

   store   |  price  |     date      | distributor |
----------------------------------------------------
Store MAX    -10000     22-05-2019      RedBull
Store MAX     25000     22-05-2019      RedBull
Store Z      -2000      22-05-2019      RedBull
Store Z       15000     22-05-2019      RedBull

我想要的结果:

 store   |  price  |     date      | distributor |
----------------------------------------------------
Store MAX    15000     22-05-2019      RedBull
Store Z      13000    22-05-2019       RedBull

为什么 SQL 没有在 SUM 函数中包含 (-) 运算符?

如果你能帮忙请指教,谢谢!

【问题讨论】:

  • 我认为问题可能出在您的小组中,是不是不能计算总数?
  • 您的结果中的distributor 列来自哪里? SELECT 中没有定义。
  • 你能创建一个小提琴,在哪里重现这个? dbfiddle.uk/?rdbms=sqlserver_2019
  • 我无法复制问题;数据聚合良好(如果我们假设数据中的distributor 实际上是name 列):db<>fiddle
  • 没错,就是分销商

标签: sql sql-server database tsql


【解决方案1】:

首先从“选择”和“分组依据”中将 d.name 替换为经销商,因为我在您的输出中没有看到“名称”字段。

【讨论】:

  • 更改/转换SELECT 中列的数据类型不会影响返回的行数。
  • 首先将 d.name 从“select”和“group by”替换为distributor,因为我在您的输出中看不到“name”字段。
  • 是的,我对此有 commented,并且 OP 有 confirmed name 实际上是 distributor。我假设它应该是d.name AS Distributor
  • 我不是 OP,Lenroy...
  • 你能修剪空格吗
【解决方案2】:

这会发生,因为有些东西不一样:

  • 商店名称不一样,但看起来很相似。
  • 日期不相同。也许它们有时间成分,但没有显示出来。
  • 经销商不一样。

我猜商店名称没问题,因为它们是在表格中查找的。您可以通过在其他列上使用聚合函数来检查是否仅使用它:

select m.store, SUM(s.salePrice) as Price,
       max(s.Date), max(d.name)
from market m join
     distributor d
     on d.marketId = m.marketId join
     sales s
     on s.distributorId = d.distributorId
group by m.store;

如果这不会产生重复,那么您知道store 没问题,您可以检查其他列。当您找到它们时,您需要调查这些值以确定如何修复它们。

【讨论】:

    猜你喜欢
    • 2011-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-21
    • 2015-03-31
    • 2012-06-27
    相关资源
    最近更新 更多