In diesem Artikel werden die relevanten Kenntnisse des SQL-Servers erläutert, um die Gruppierung Maximalwert, Minimalwert, Zeit entsprechend dem Maximalwert und Zeit entsprechend dem Minimalwert zu ermitteln.
Erstellen Sie zuerst die Tabelle „Students“
CREATE TABLE [dbo].[Students](
[Id] [int] IDENTITY(1,1) NOT NULL,
[age ] [int] NULL,
[name] [nvarchar](50) NULL,
[addTime] [datetime] NULL
) ON [PRIMARY]
INSERT Mehrere Testdaten
INSERT [dbo].[Students] ([age], [name], [addTime]) VALUES (22, N'李思', '2015-04-08 01 :00 :00.000')
INSERT [dbo].[Students] ([age], [name], [addTime]) VALUES (8, N'李思', '2017-05-03 00:00: 00.000' )
INSERT [dbo].[Students] ([age], [name], [addTime]) VALUES (98, N'李思', '2017-10-03 00:00:00.000')
INSERT [dbo].[Students] ([age], [name], [addTime]) VALUES (34, N'张三', '2016-09-08 00:00:00.000')
INSERT [ dbo].[Students] ([age], [name], [addTime]) VALUES (45, N'张三','2011-05-08 00:00:00.000')
INSERT [dbo ]. [Studenten] ([Alter], [Name], [addTime]) VALUES (5, N'Zhang San', '2014-04-01 00:00:00.000')
Der erste Weg Schreibweise:
Diese Schreibweise verwendet die Fensterfunktion . Die Beschreibung des -Verhaltens der Fensterfunktion erscheint in der OVER-Klausel der Funktion und umfasst mehrere Elemente. 3 Kernelemente: Partition, Sortierung und Framework
eindeutigen Namen auswählen,maxAge, max(case maxAgenum when 1 then addtime else '' end) over(partition by name ) maxAddTime,
minage,max(case minAgenum when 1 then addtime else '' end) over(partition by name) minAddTime
from (
select name,addtime,
max(age) over( Partition nach Name ) maxAge,
min(age) over(partition by name) minAge,
RANK() over(partition by name order by age desc) maxAgeNum ,
RANK() over(partition by name nach Alter ordnen ) minAgeNum von Schülern
) s
(
select name,max(age) maxAge,min( Alter) minAge von Schülern
nach Namen gruppieren
)
select name,max(maxAge) maxAge,max(maxAgeTime) maxAgeTime,max(minAge) minAge,max(minAgeTime) minAgeTime from (
select ss.name ,s.maxAge,ss.addTime maxAgeTime,0 minAge, '' minAgeTime von Schülern ss inner join s auf ss.name=s.name und ss.age=s.maxAge
Union alleselect ss.name,0 maxAge , '' maxAgeTime,s.minAge minAge,ss.addTime minAgeTime von Schülern ss inner join s auf ss.name=s.name und ss.age=s.minAge
) eine Gruppe nach Namen
Verwandte Erklärungen zum Left-Join-Ein- und Where-Bedingungsplatzieren
Über PHP+MySQL-Fuzzy-Query-Funktionen Wissen
Wie man Dateien über PHP kopiert und verschiebt
Das obige ist der detaillierte Inhalt vonSQL Server ermittelt den Maximalwert, den Minimalwert, die dem Maximalwert entsprechende Zeit und die dem Minimalwert entsprechende Zeit. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!