0

同じクエリで取得された最小値のグループから最大値を見つけるクエリを作成することは可能ですか?

値を小さくして最小値を並べ替えるのは簡単です(リストの一番上に目的の最大値が残ります)が、その値だけを返し、他には何も返さないクエリを作成できるかどうか知りたいです。

最小値を取得するクエリ:

SELECT dbo.tblDevices.Status
, L.Device_id
, MIN(L.DateAndTime) As 'End Date'
FROM dbo.tblDeviceLocation AS L
JOIN dbo.tblDevices
ON L.Device_id = dbo.tblDevices.Device_id
GROUP BY L.Device_id, dbo.tblDevices.Status

これらの最小値の最大値を持つ行を見つけたいと思います。サブクエリを使用しようと考えましたが、N-最小値の行数が返されるため、機能していません。次に、COMPUTEを使用することを考えました。これは小計と見なすことができるためですが、グループ化されていないもの(L.DateAndTime)を小計することはできないため、これも機能しません。

何かご意見は?

*編集:この記事http://www.programmerinterview.com/index.php/database-sql/find-maximum-value-without-using-aggregate/に出くわしました。これは、大まかなクイックリードから適用できる可能性があります。何かを発見したとき/見つけたら更新します。

4

1 に答える 1

0

ORDER BYを使用できます。また、SQL-Server TOP 1を使用している場合、MySQLを使用している場合は、クエリの最後にLIMIT1を使用する必要があります。

SELECT TOP 1 dbo.tblDevices.Status
, L.Device_id
, MIN(L.DateAndTime) As 'End Date'
FROM dbo.tblDeviceLocation AS L
JOIN dbo.tblDevices
ON L.Device_id = dbo.tblDevices.Device_id
GROUP BY L.Device_id, dbo.tblDevices.Status
ORDER BY MIN(L.DateAndTime) DESC // order by max value
于 2013-03-07T18:24:10.157 に答える