【问题标题】:SQL Count Number of Occurrences for a Multi-Row Distinct, By Multi-Row DistinctSQL Count 多行不同的出现次数,按多行不同
【发布时间】:2017-10-04 23:32:45
【问题描述】:

我有一个查询,它将“总计”列中的所有值相加,并将它们与商店名称、年份、品牌和型号的唯一组合对齐(通过分组依据):

    select storename, year, make, model, sum(total) as [Sum]
    from #TempTable
    group by storename, year, make, model

结果示例:

    StoreA 2009 TOYO    AVALON  1039.95
    StoreB 2005 CHET    TAHOE   1039.99
    StoreC 2010 MAZD    CX-9    1040.07
    StoreD 2007 DODG    CHARGER 1040.09
    StoreE 2003 ACUT    MDX     1040.17

我想要做的是在这个查询中添加另一列来计算每个组中存在多少行。例如,我知道 StoreA 有 5 个 2009 TOYO AVALON 实例,但我希望脚本计算出商店名称、年份、品牌、型号的每个唯一组合有多少个实例。我希望它显示为 [Sum] 右侧的额外列 [CarCount]。

一定有办法,但我一直没能找到解决办法。感谢您的帮助!

【问题讨论】:

    标签: sql sql-server group-by count


    【解决方案1】:

    将 count(*) 添加到查询中,它将计算该组中的实例数

     select storename, year, make, model, sum(total) as [Sum], count(*) carcount 
        from #TempTable
        group by storename, year, make, model
    

    【讨论】:

    • 瓦利,谢谢您的回答。这正是我所需要的。
    【解决方案2】:

    除非我误解了,否则您需要对现有分组进行计数。只需使用COUNT 即可获取。

    select storename, year, make, model, sum(total) as [Sum], COUNT(1) as CarCount
        from #TempTable
        group by storename, year, make, model
    

    【讨论】:

    • AB_87,谢谢您的回答!它与上面 Valli 提出的非常相似。我运行了两个查询,它们产生了相同的结果,所以我想知道 count(*) 和 count(1) 之间的区别是什么?
    • @JordanMcDonald 我提交的时候没有答案。我们几乎同时提交。它发生了。关于COUNT(1)COUNT(*) 有很多问题。以下是最受欢迎的问题之一的链接。 stackoverflow.com/questions/1221559/count-vs-count1
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-23
    • 2017-01-21
    • 1970-01-01
    • 2014-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多