Comment rédiger une requête qui renvoie la valeur médiane en SQL?
Sep 23, 2025 am 03:52 AMLa médiane dans SQL est calculée à l'aide de Row_number () et Count () ou Centile_cont (0,5). Tout d'abord, affectez les numéros de ligne et obtenez le nombre total via les fonctions de fenêtre. Déterminez ensuite les positions moyennes: si le nombre est impair, choisissez la valeur centrale; Si même, en moyenne les deux valeurs moyennes. Utilisez un CTE pour calculer les positions et filtrer les lignes en conséquence. Pour les bases de données prenant en charge le centile_cont (comme SQL Server, PostgreSQL), utilisez directement SELECT PERCILE_CONT (0,5) dans le groupe (Ordre par valeur) pour une syntaxe plus simple. MySQL 8.0 prend en charge les fonctions de fenêtre mais manque de centile_cont; Les versions antérieures nécessitent une méthode manuelle. SQLite ne prend pas en charge les fonctions de centile, alors utilisez l'approche ROW_NUMBER. Préférez le centile_conte lorsqu'il est disponible, sinon simulez avec le classement et l'arithmétique.
Pour obtenir la valeur médiane dans SQL, vous devez utiliser les fonctions de fenêtre et une logique conditionnelle car il n'y a pas de fonction médiane intégrée () dans la plupart des bases de données SQL (sauf Oracle et certaines versions plus récentes d'autres). La méthode varie légèrement en fonction de votre système de base de données, mais voici une approche standard à l'aide de row_number () , count () et arithmétique pour trouver la ou les valeurs moyennes.
Utilisation de row_number () et count ()
Cette méthode fonctionne sur de nombreuses plates-formes SQL comme PostgreSQL, SQL Server et MySQL (8.0).Supposons que vous avez un tableau appelé Numbers avec une valeur de colonne. Voici comment calculer la médiane:
Avec trid_values ??comme ( SéLECTIONNER valeur, Row_number () over (ordonnance par valeur) comme row_num, Comte (*) over () comme total_count à partir des nombres ), médian_positions comme ( SéLECTIONNER CAS Quand Total_Count% 2 = 1 alors (total_count 1) / 2 Else total_count / 2 Se terminer comme pos1, CAS Quand Total_Count% 2 = 1 alors (total_count 1) / 2 Else (total_count / 2) 1 Terminez comme POS2 De Trid_Values Limite 1 ) Sélectionnez AVG (valeur * 1.0) comme médian_value De trid_values, médian_positions Où row_num in (pos1, pos2);
Comment ?a marche:
- Le premier CTE attribue un numéro de ligne à chaque valeur dans l'ordre trié et obtient le nombre total.
- Le deuxième CTE calcule une ou deux positions moyennes:
- Si le nombre est impair: les deux positions sont les mêmes (au milieu).
- Si même: prenez la moyenne des deux valeurs centrales.
- La requête finale sélectionne les valeurs à ces positions et les fait en moyenne pour gérer les deux cas uniformément.
Alternative: Utilisation de centile_cont ()
Si votre base de données le prend en charge (par exemple, SQL Server, PostgreSQL, Oracle), c'est plus simple.SéLECTIONNER Centile_cont (0,5) dans le groupe (ordre par valeur) comme médian_value à partir des nombres;
Cela calcule directement le 50e centile (médian) et gère automatiquement le nombre d'étranges.
Notes par base de données
- MySQL : pas
PERCENTILE_CONT
avant 8,0; Utilisez la première méthode. - PostgreSQL : prend en charge les deux méthodes.
- SQL Server : Prise en charge complète de
PERCENTILE_CONT
. - SQLITE : aucune prise en charge de la fonction de fenêtre pour les centiles; Utilisez le classement manuel.
Fondamentalement, utilisez PERCENTILE_CONT(0.5)
si disponible. Sinon, simulez-le à l'aide de numéros de ligne et comptez.
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!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Stock Market GPT
Recherche d'investissement basée sur l'IA pour des décisions plus intelligentes

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

USECOMmentOnColumnoralterTablewithCommentToDocumentTables etColumnSinsQL; SyntaxVariesByDBMS - PostgreSQLandoracleUseCommenton, MySQLUSESCommentIncreate / Alterstatements, andcomementsCanBeviewEdViaSystemtslienformations_schema, ButsqliTelackSSUPPort.

La fonction SoundEx convertit le texte en un code à quatre caractères représentant la prononciation, ajoute trois chiffres à la première lettre, ignore les voyelles et les lettres spécifiques, et cartographie des consonnes avec des prononciations similaires au même nombre, réalisant la recherche basée sur la prononciation. Par exemple, Smith et Smythe génèrent tous deux S530, et les noms avec des prononciations similaires peuvent être trouvés via WhereSoundEx (Last_name) = SoundEx ('Smith'). Combiné avec la fonction de différence, il peut renvoyer un score de similitude de 0 à 4, filtrez les résultats de la projection de la prononciation, ce qui convient au traitement des différences d'orthographe, mais a un effet limité sur les noms non anglophones, et l'optimisation des performances doit être accordée à l'attention.

ToFindorphaneDrecords, usealeftjoinornotexiststoidentifyChildRecordswithoutmatchingPaRentRecords.forexample, selecto.fromordersoleftjoinoistomerscono.customer_id = c.Customer_idwherec.Customer_idisnullredSordersLinkEdtonon-ExistCustomerSers.AltervatIverv.

Lorsque vous utilisez CreateTable, ajoutez un mot-clé unique ou utilisez AlterTableAddConstraint pour ajouter des contraintes aux tables existantes pour vous assurer que les valeurs de la colonne sont uniques et prennent en charge les colonnes uniques ou plusieurs colonnes. Avant d'ajouter, vous devez vous assurer que les données ne sont pas dupliquées. Vous pouvez le supprimer via DropConstraint, faites attention aux différences de syntaxe entre les différentes bases de données et les valeurs nuls.

Utilisez la fonction Last_day () (MySQL, Oracle) pour obtenir directement le dernier jour du mois où la date spécifiée est, comme Last_day ('2023-10-15') pour retourner 2023-10-31; 2. SqlServer utilise la fonction eomonth () pour atteindre la même fonction; 3. PostgreSQL calcule la fin du mois via date_trunc et intervalle; 4. Sqlite utilise la fonction de date pour combiner ?startofmonth?, ?1 mois? et ?-1day? pour obtenir les résultats.

SQLSERVERUSESNEWID () TOGENERETERTUCES; 2.MySQLUSUUUID () Forversion1Uuids; 3.PostgreSQUSESGEN_RANDOM_UUID () After AnablingPgcrypto; 4.SqlitelacksBuilt-Insupport, SogereateuUidsInapcationCode.

Pour mettre à jour les données dans la table SQL, l'instruction de mise à jour est requise. La syntaxe de base est: mise à jour du nom de nom de la table Colonne 1 = valeur 1, colonne 2 = valeur 2 ... où les conditions; 1. Lors de la mise à jour d'une seule ligne, spécifiez un identifiant unique, comme la clé principale; 2. Lors de la mise à jour de plusieurs colonnes, répertoriez plusieurs colonnes et valeurs dans la clause SET; 3. Lors de la mise à jour de plusieurs lignes, plusieurs enregistrements correspondant aux conditions où les conditions seront mises à jour en même temps; 4. Si la clause où est omise, toutes les lignes seront mises à jour, alors faites attention à fonctionner; 5. Il est recommandé d'utiliser les opérations de mise à jour d'emballage des transactions pour revenir en arrière lorsqu'une erreur se produit; De plus, vous devez toujours utiliser SELECT pour tester les conditions, sauvegarder des données importantes et utiliser la limite dans les bases de données prises en charge pour limiter le nombre de lignes à mettre à jour.

ThemedianinsqlisccalculedUsingRow_number () etCount () orpercendile_cont (0,5). Premier, AssignRownUmbersAndgetTotalCountViawindowFunctions.
