如何对另一列的分组中的一列求和?

Posted

技术标签:

【中文标题】如何对另一列的分组中的一列求和?【英文标题】:How do I sum one column within a grouping of another column? 【发布时间】:2011-07-17 08:54:18 【问题描述】:

这是我的问题:

NAME    DATE           PRESENTS
bob     march 3 2011      1
bob     june 6 2008       2
bob     jan 3 2012        3
mary    feb 14 1986       4
mary    april 10 2001     5
mary    jan 3 2012        6
kate    march 3 2011      7
kate    jan 3 2012        8
kate    oct 9 2013        9
celia   march 3 2011     10
celia   feb 14 1986      11
celia   july 4 2011      12
celia   jan 3 2012       13
celia   feb 14 1991      14

因此,我们的目标是添加凯特和西莉亚在同一天收到的礼物数量(如果他们在当天收到礼物的话)。

我需要做的就是这样,除了更大的数据集。数据集的大小可能约为 100,000 个条目。

我需要 SQL 或 Access 2003 查询中的答案。

【问题讨论】:

如果您发布代码、XML 或数据示例,在文本编辑器中突出显示这些行并单击编辑器上的“代码示例”按钮 ( )工具栏以很好地格式化和语法突出显示它! 将列命名为“PRESENTS”,而这显然是一个 id,这是一个糟糕的设计示例。 请不要发布家庭作业式的问题。如果您向他们展示您的尝试以及遇到的困难,人们会更愿意帮助您。 【参考方案1】:

如果presents 是 kate 或 celia 或其他人在特定日期收到的礼物数量:

select name, date, sum(presents) total_on_date
from table
where name in ('kate','celia')
group by name, date

我绝不是 sql 天才

【讨论】:

PRESENTS 不是礼物的数量,它是一个 id @ascanio 我确实怀疑。但我认为礼物是该日期的礼物数量,而 OP 给出的例子只是一个例子(虽然不是很贴切)【参考方案2】:
select name, date, count(presents) total_on_date
from table
where name in ('kate','celia')
group by name, date

假设你想计算礼物的 ID

【讨论】:

【参考方案3】:

你必须重新加入自己,像这样:

select DATE, SUM(PRESENTS) as TOTAL_JOINT_PRESENTS
from mytable t1
join mytable t2 on t1.DATE = t2.DATE
where t1.NAME = 'kate'
and t2.NAME = 'celia';

【讨论】:

【参考方案4】:

与波西米亚人给出的答案有关:-

我认为他想计算这两个人来的天数......

select count(*)
from mytable t1 join mytable t2 
     on t1.DATE = t2.DATE 
where t1.NAME = 'kate' and t2.NAME = 'celia';

【讨论】:

【参考方案5】:

如果你愿意

凯特和西莉亚在同一天收到的礼物数量

然后:

SELECT
    presents1.date AS presents_date,
    (COUNT(*) + 1) AS presents_count
FROM
    presents presents1,
    presents presents2
WHERE presents1.date = presents2.date
AND presents1.name = 'kate'
AND presents2.name = 'celia'
GROUP BY presents1.date

假设表名是presents

【讨论】:

以上是关于如何对另一列的分组中的一列求和?的主要内容,如果未能解决你的问题,请参考以下文章

Pyspark数据框:对一列求和,同时对另一列进行分组

窗口函数:仅对另一列中的不同值求和

python如何根据csv中一列的内容对另一列进行写入

Pandas 数据框:按两列分组,然后对另一列进行平均

对另一列python中的每个类别执行多个groupby

对最后一小时分组中的列值求和,然后将所有 5 的总和作为另一列中的总和