【问题标题】:Sum and count of grouped records分组记录的总和和计数
【发布时间】:2023-01-25 19:58:04
【问题描述】:

可以说我有一张桌子:

Col1 Col2 Col3
R1 C1 5
R2 C3 8
R1 C1 2
R1 C2 4
R2 C5 3
R2 C2 4

我需要得到:

  1. Col2与对应的Col1SUM的相同值的计数 来自Col3
  2. 分组结果的总和和计数。

    为了实现#1,我的代码如下所示:

    SELECT Col1, Col2, COUNT(*), SUM(Col3)
    FROM myTable 
    GROUP BY Col1, Col2
    

    我得到了结果(没问题):

    Col1 Col2 Count Sum
    R1 C1 2 7
    R1 C2 1 4
    R2 C2 1 4
    R2 C3 1 8
    R2 C5 1 3

    Demo

    对于#2,我需要知道SUMCount列的值和SUMSUM的值,其中Col1列的值相等。我怎样才能升级我的代码? 期望的结果是这样的:

    Col1 Col2 Count Sum
    R1 C1 2 7
    R1 C2 1 4
    3 11
    R2 C2 1 4
    R2 C3 1 8
    R2 C5 1 3
    3 15

【问题讨论】:

    标签: sqlite delphi-10.2-tokyo


    【解决方案1】:

    您可以通过添加记录来模拟汇总记录,这些记录仅聚合到“列1" 值,使用 UNION ALL 操作添加到您的初始结果集。

    SELECT Col1, Col2, COUNT(*) AS cnt, SUM(Col3) AS total FROM myTable GROUP BY Col1, Col2
    UNION ALL 
    SELECT Col1, NULL, COUNT(*)       , SUM(Col3)          FROM myTable GROUP BY Col1 
    ORDER BY Col1
    

    输出:

    Col1 Col2 cnt total
    R1 C1 2 7
    R1 C2 1 4
    R1 null 3 11
    R2 C2 1 4
    R2 C3 1 8
    R2 C5 1 3
    R2 null 3 15

    查看演示 here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-23
      • 2023-03-27
      • 1970-01-01
      • 2012-07-29
      • 2019-12-01
      • 2015-06-30
      相关资源
      最近更新 更多