sqlite 分组记录的总和和计数

h7appiyu  于 2023-01-26  发布在  SQLite
关注(0)|答案(1)|浏览(289)

假设我有一张table:
| 第1列|第2列|第3列|
| - ------|- ------|- ------|
| R1|C1|五个|
| R2|C3|八个|
| R1|C1|第二章|
| R1|C2|四个|
| R2|C5|三个|
| R2|C2|四个|
我需要:

  1. Col2的相同值与Col3的对应Col1SUM的计数。
    1.分组结果的总和和计数。
    为了实现#1,我的代码如下所示:
SELECT Col1, Col2, COUNT(*), SUM(Col3)
FROM myTable 
GROUP BY Col1, Col2

我得到的结果(这是确定的):
| 第1列|第2列|计数|总计|
| - ------|- ------|- ------|- ------|
| R1|C1|第二章|七|
| R1|C2|1个|四个|
| R2|C2|1个|四个|
| R2|C3|1个|八个|
| R2|C5|1个|三个|
Demo
对于#2,我需要知道列Count的值的SUM和列SUM的值的SUM,其中列Col1的值是相等的。我如何升级我的代码呢?期望的结果可能是这样的:
| 第1列|第2列|计数|总计|
| - ------|- ------|- ------|- ------|
| R1|C1|第二章|七|
| R1|C2|1个|四个|
| | | 三个|十一|
| R2|C2|1个|四个|
| R2|C3|1个|八个|
| R2|C5|1个|三个|
| | | 三个|十五|

kg7wmglp

kg7wmglp1#

通过使用UNION ALL操作将仅聚合到"* Col1 *"值的记录添加到初始结果集,可以模拟汇总记录。

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

输出:
| 第1列|第2列|碳纳米管|总计|
| - ------|- ------|- ------|- ------|
| R1|C1|第二章|七|
| R1|C2|1个|四个|
| R1|零|三个|十一|
| R2|C2|1个|四个|
| R2|C3|1个|八个|
| R2|C5|1个|三个|
| R2|零|三个|十五|
检查here演示。

相关问题