【问题标题】: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,这是一个糟糕的设计示例。
  • 请不要发布家庭作业式的问题。如果您向他们展示您的尝试以及遇到的困难,人们会更愿意帮助您。

标签: sql ms-access


【解决方案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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-08-12
          • 2017-04-20
          • 2021-07-25
          • 2014-10-20
          • 1970-01-01
          • 1970-01-01
          • 2018-05-22
          相关资源
          最近更新 更多