0
いくつかの分析を行うために、単一のセッションIDの最小値と最大値のタイムスタンプを取得しようとしています。 同じSQLクエリのMINおよびMAXバージョンが(少し)異なる結果セットを返す原因は何ですか?なぜ結果が違うのか混乱しています。データベースはリアルタイムで更新されません。誰もが可能なexplenationを持っていますか?SQL最小値と最大値が異なる結果セットを返す
SELECT [ActivityLogs].sessionid,
maxSelect.mxDate,
[ActivityLogs].ClientIp INTO ##maxSessionTimes
FROM [OLBRET_COPY].[dbo].[ActivityLogs]
INNER JOIN
(SELECT max([ActivityLogs].[DateTime]) mxDate,
SessionId
FROM [OLBRET_COPY].[dbo].[ActivityLogs]
GROUP BY SessionId) maxSelect ON [ActivityLogs].SessionId = maxSelect.SessionId
AND [ActivityLogs].[DateTime] = maxSelect.mxDate
WHERE [ActivityLogs].[DateTime] > '2017-11-29'
SELECT [ActivityLogs].sessionid,
minSelect.mxDate,
[ActivityLogs].ClientIp INTO ##minSessionTimes
FROM [OLBRET_COPY].[dbo].[ActivityLogs]
INNER JOIN
(SELECT min([ActivityLogs].[DateTime]) mxDate,
SessionId
FROM [OLBRET_COPY].[dbo].[ActivityLogs]
GROUP BY SessionId) minSelect ON [ActivityLogs].SessionId = minSelect.SessionId
AND [ActivityLogs].[DateTime] = minSelect.mxDate
WHERE [ActivityLogs].[DateTime] > '2017-11-29'
を日付が参加の一部であり、その分、 'VS' max'にフィルタリングするときあなたは異なる値でフィルタリングしています。さまざまなクエリで同じ結果が期待されるのはなぜですか? – JohnLBevan
@JohnLBevan私は私の最初の質問が100%明確でないかもしれないことを認識しています。私は私には奇妙な結果の数が増えています。予想される動作は、SessionIDが1回だけ出現し、minとmaxが同じ日付時刻を返し、同じSessionIDの複数のインスタンスがある場合、minとmaxは真のminとmaxです。私は結合の一部である日付に関して何を意味するのか分かりません。私はそれが結果の数にどのように影響するのか分かりません。 – christodorov
データはありませんが、一般的に、2つの行が同じ最小日付を持ち、異なる最大日付を持つ可能性があります。 –