【问题标题】:How to run distinct and Sum in one query in sql server 2008 R2如何在 sql server 2008 R2 的一个查询中运行 distinct 和 Sum
【发布时间】:2016-05-24 08:27:40
【问题描述】:

我有一张桌子 #1,如附图所示。首先,我想总结所有不同 id 的所有数量。然后想显示具有相同数量的 id 的数量。

【问题讨论】:

  • 你能解释一下总ID和第二张表的关系吗?我无法理解
  • @NemanjaT 没有关系。实际上只有 1 个表存在。
  • 看Felix的回答,我提出的问题和他的差不多。
  • @NemanjaT 他的查询有问题。它只是从表 1 中直接返回。虽然我想先为 id 添加 qty,但让我们从表 1 中说 1。然后再次想检查有多少 id 的 qty sum 为 id 1

标签: sql sum distinct sql-server-2008r2-express


【解决方案1】:

使用SUMCOUNT

SELECT
    COUNT(*) AS totalId,
    qty
FROM (
    SELECT
        id, SUM(qty) AS qty
    FROM tbl
    GROUP BY id
)t
GROUP BY qty

ONLINE DEMO

【讨论】:

  • 它只返回一条记录'1289002, 1'
  • 这个查询很好,所以它一定是其他让你感到困扰的事情。
  • 他的查询有问题。它只是从表 1 中直接返回。虽然我想先为 id 添加 qty,但让我们从表 1 中说 1。然后再次想检查有多少 id 的 qty sum 为 id 1
  • 他的查询很好,只需创建一个临时表并将第一个查询的结果插入其中,然后进行外部选择 .... 或只进行 2 个查询,首先使用内部选择,第二个作为内选和外选
  • @Jani Mani:我们在这里都同意这完美地回答了你的问题。正如您从链接的演示中看到的那样,查询返回的正是您要查找的结果。所以你应该接受这个答案。如果您有其他要求,请创建一个新的单独问题。
【解决方案2】:

创建临时表后试试这个

create table #Temp
(
  id int, 
  qty int
)

Insert Into #Temp
SELECT  id, SUM(qty)
        FROM yourTable
        group by id

SELECT  * FROM #Temp

SELECT  Count(id) , qty
        FROM #Temp
        GROUP BY qty
        ORDER BY qty DESC

【讨论】:

    【解决方案3】:

    显示所有不同 id 的所有数量的总和:

    SELECT id,SUM(qty) FROM table GROUP BY id;
    

    显示数量相同的id个数

    SELECT count(id),quantity FROM (SELECT id,SUM(qty) AS quantity FROM table GROUP BY id) GROUP BY quantity
    

    【讨论】:

    • 嗯,这是@FelixPamittan 15 分钟前写的相同答案:)
    • @dnoeth,不是那样的。我想在表 1 中求和并希望得到像表 2 一样的结果。然后从表 2 中我想得到像必需表一样的结果
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-25
    • 1970-01-01
    相关资源
    最近更新 更多