SQL Server trouve la valeur maximale, la valeur minimale, l'heure correspondant à la valeur maximale et l'heure correspondant à la valeur minimale du groupe

jacklove
Libérer: 2023-03-25 17:10:02
original
4361 Les gens l'ont consulté

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal