1

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アドレスごとに1行を返し、最も低い日付の最初のインスタンスを「MinDate」、日付の最後のインスタンス(最新)を最大の日付として、カウントを「」として返すクエリを作成したいと思います。 TRUE」は、誤ったカウントレコードを無視します。

group byをグーグルで検索し、日付式にmin()とmax()を使用すると仮定すると、正しいアプローチになりますか?

4

1 に答える 1

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 フィドルのデモ

于 2013-03-22T04:01:09.007 に答える