如何对另一列的分组中的一列求和?
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
。
【讨论】:
以上是关于如何对另一列的分组中的一列求和?的主要内容,如果未能解决你的问题,请参考以下文章