【问题标题】:SQL: How to select a max value for each group per day?SQL:如何为每个组每天选择一个最大值?
【发布时间】:2012-01-04 01:18:01
【问题描述】:

假设我有一个包含以下列的表...

Name, Date, Number

假设我们在这些列中插入了以下数据...

Bob, 2011-11-22, 1
Bob, 2011-11-22, 5
Bob, 2011-11-22, 4
Bob, 2011-11-22, 3
Wendy, 2011-11-22, 3
Wendy, 2011-11-22, 4
Wendy, 2011-11-22, 2
Wendy, 2011-11-22, 1
Chris, 2011-11-22, 4
Chris, 2011-11-22, 1
Bob, 2011-11-21, 4
Bob, 2011-11-21, 3
Wendy, 2011-11-21, 2
Wendy, 2011-11-21, 4
Wendy, 2011-11-21, 1
Chris, 2011-11-21, 4
Chris, 2011-11-21, 1

现在我想做的是为每个日期获取每个名称的最大数字值。所以我的查询结果应该是这样的......

Bob, 2011-11-22, 5
Wendy, 2011-11-22, 4
Chris, 2011-11-22, 4
Bob, 2011-11-21, 4
Wendy, 2011-11-21, 4
Chris, 2011-11-21, 4

任何帮助将不胜感激。我正在使用 SQL 2005。

【问题讨论】:

  • 是的,我正在处理的实际查询有更多的连接和列,但我想把问题放在问题的核心上。到目前为止的答案肯定帮助我更接近我真正想做的事情。谢谢大家!
  • 您能否添加更多关于最终操作或查询的详细信息以帮助将来进行搜索?它可能会帮助人们在未来了解为什么简单的解决方案在特定场景中不起作用。

标签: sql sql-server select


【解决方案1】:

怎么样

SELECT [Name], [Date], MAX(Number)
FROM [yourTable]
GROUP BY [Name], [Date] 

见:

【讨论】:

    【解决方案2】:

    没有你想的那么难。

    select name, date, max(number) from table group by name, date
    

    【讨论】:

      【解决方案3】:
      SELECT Name, Date, MAX(Number)
          FROM YourTable
          GROUP BY Name, Date;
      

      【讨论】:

        【解决方案4】:
        SELECT Name, `Date`, MAX(Number)
        FROM yourtable
        GROUP BY Name, `Date`
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-05-12
          • 2019-01-20
          • 2018-03-06
          • 2021-02-23
          • 1970-01-01
          相关资源
          最近更新 更多