Cet article explique les connaissances pertinentes du serveur SQL pour trouver le regroupement la valeur maximale, la valeur minimale, le temps correspondant à la valeur maximale et le temps correspondant à la valeur minimale.
Créez d'abord la table Étudiants
CREATE TABLE [dbo].[Étudiants](
[Id] [int] IDENTITY(1,1) NOT NULL,
[age ] [int] NULL,
[name] [nvarchar](50) NULL,
[addTime] [datetime] NULL
) ON [PRIMARY]
INSÉRER Plusieurs éléments de données de test
INSÉRER [dbo].[Étudiants] ([âge], [nom], [addTime]) VALEURS (22, N'李思', '2015-04-08 01 :00 :00.000')
INSÉRER [dbo].[Étudiants] ([age], [nom], [addTime]) VALEURS (8, N'李思', '2017-05-03 00:00 : 00.000' )
INSÉRER [dbo].[Étudiants] ([age], [nom], [addTime]) VALEURS (98, N'李思', '2017-10-03 00:00:00.000')
INSÉRER [dbo].[Étudiants] ([âge], [nom], [addTime]) VALEURS (34, N'张三', '2016-09-08 00:00:00.000')
INSÉRER [ dbo].[Étudiants] ([âge], [nom], [addTime]) VALEURS (45, N'张三','2011-05-08 00:00:00.000')
INSÉRER [dbo ]. [Étudiants] ( [âge], [nom], [addTime]) VALEURS (5, N'Zhang San', '2014-04-01 00:00:00.000')
La première façon d'écriture :
Cette façon d'écrire utilise la fonction window La description du comportement de la fonction window apparaît dans la clause OVER de la fonction et implique plusieurs éléments, 3 éléments principaux Ce sont : la partition, le tri et le framework
sélectionnez un nom distinct,
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 par nom) maxAge,
min(age) over(partition par nom) minAge,
RANK() over(partition par nom ordre par âge desc) maxAgeNum ,
RANK() over(partition par nom trier par âge ) minAgeNum des étudiants
) s
Deuxième façon d'écrire :
avec s comme
(
sélectionner le nom,max(age) maxAge,min( age) minAge des étudiants
regrouper par nom
)
sélectionner le nom,max(maxAge) maxAge,max(maxAgeTime) maxAgeTime,max(minAge) minAge,max(minAgeTime) minAgeTime de (
select ss.name ,s.maxAge,ss.addTime maxAgeTime,0 minAge, '' minAgeTime des étudiants ss inner join s sur ss.name=s.name et ss.age=s.maxAge
union tous
sélectionnez ss.name,0 maxAge , '' maxAgeTime,s.minAge minAge,ss.addTime minAgeTime des étudiants ss inner join s sur ss.name=s.name et ss.age=s.minAge
) un groupe par nom
Dans cet article, le serveur SQL trouve la valeur maximale, la valeur minimale, l'heure correspondante de la valeur maximale et l'heure correspondant à la valeur minimale du groupe. Pour plus de matériel d'apprentissage, veuillez. faites attention au site Web chinois php.
Recommandations associées :
Explications connexes sur la jointure gauche sur et où le placement des conditions
À propos de la requête floue php+mysql Fonctionnel connaissances
Comment copier et déplacer des fichiers via php
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!