【问题标题】:sql for finding sum for each unique timestamp用于查找每个唯一时间戳的总和的 sql
【发布时间】:2013-02-06 00:07:42
【问题描述】:

不幸的是,我已经离开数据库游戏快 2 年了,所以我失去了一些知识,我正在努力找回它。

我需要获取 A 列中具有等效时间戳(B 列)的所有行的总数。

例如,如果这是我的数据库:

site   |  products |      sell_time
tokyo  |  12       | 2013-02-19 00:01:00
tokyo  |  17       | 2013-02-19 00:01:00
nyc    |  10       | 2013-02-19 00:01:00
dallas |   3       | 2013-02-19 00:02:00
tokyo  |  32       | 2013-02-19 00:03:00
tokyo  |   3       | 2013-02-19 00:03:00
nyc    |  10       | 2013-02-19 00:04:00

我想知道东京每个时间戳的计数,我想看看

site   | num_products |   sell_time
tokyo  | 29           | 2013-02-19 00:01:00
tokyo  | 35           | 2013-02-19 00:03:00

感谢任何帮助。在这方面我已经失去了优势,现在我必须把它找回来。

【问题讨论】:

    标签: sql join timestamp sum max


    【解决方案1】:

    您需要使用带有GROUP BY 的聚合函数:

    select site,
      sum(products) num_products,
      sell_time
    from yourtable
    where site = 'tokyo'
    group by site, sell_time
    

    SQL Fiddle with Demo

    【讨论】:

    • @popnoodles 他们没有指定他们正在使用的数据库,并且大多数情况下如果site 出现在选择列表中,那么它必须出现在GROUP BY 中。 Tokyo 出现两次,因为存在不同的 sell_time 值。
    • 好吧,我不太明白。
    【解决方案2】:

    像这样?

    SELECT site, SUM(products), sell_time
    FROM yourTable
    WHERE site = 'tokyo'
    GROUP BY sell_time
    

    在 MySQL 中,以上应该可以工作。在 SQL Server 中,您需要将 site 添加到 GROUP BY 中,或者在 SELECT 中添加类似 MAX(site) 的内容。

    【讨论】:

      猜你喜欢
      • 2019-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-16
      • 1970-01-01
      相关资源
      最近更新 更多