【问题标题】:What is the proper way to write a SQL statement using GROUP BY to achieve a single row for each 'group'?使用 GROUP BY 编写 SQL 语句以实现每个“组”的单行的正确方法是什么?
【发布时间】:2013-03-22 03:57:51
【问题描述】:

给定 MS SQL 中的以下表结构:

数据:

ID-----+EventDate-------------------+IP--------------+Count
1       2013-03-20 21:15:22.113 192.168.1.1      False
4       2013-03-21 21:15:22.113 192.168.1.1      True
5       2013-03-19 21:15:22.113 192.168.1.1      True
6       2013-03-19 21:15:22.113 192.168.1.1      False
7       2013-03-21 21:15:22.113 192.168.1.1      True
8       2013-03-19 21:15:22.113 192.168.1.1      True

我想编写一个查询,为每个唯一的 IP 地址返回一行,最低日期的第一个实例为“MinDate”,日期的最后一个实例(最近)为最大日期,并带有计数忽略错误计数记录,它是“TRUE”。

谷歌搜索分组,并假设使用 min() 和 max() 作为日期表达式是正确的方法吗?

【问题讨论】:

    标签: sql group-by


    【解决方案1】:

    我认为这应该使用GROUP BY IP 工作。

    SELECT COUNT(1) cnt,
       MIN(EventDate) MinEventDate,
       MAX(EventDate) MaxEventDate,
       IP
    FROM YourTable
    WHERE Count = 'True'
    GROUP BY IP
    

    您正在使用哪个 RDBMS -- COUNT 作为列名可能会被保留。

    SQL Fiddle Demo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-29
      • 2022-01-08
      • 2021-07-29
      • 1970-01-01
      • 1970-01-01
      • 2020-12-24
      相关资源
      最近更新 更多