Jointure SQL avec fonction d'agrégation

Joey112

On m'a demandé de commencer à travailler davantage avec l'analyse des données et j'ai rencontré des problèmes similaires avec les fonctions d'agrégation SQL. Voici un ensemble de données très simplifié du journal des transactions de vente et du solde de l'entrepôt:

SALES
Item    Period
A        2019
A        2019
A        2018
B        2019

WAREHOUSE
Item     SerialN
A        111
A        123
A        222
C        321  

J'ai besoin d'exécuter la fonction SQL COUNT sur la table SALES , ce qui est assez simple:

select count(a.Item), a.Item from SALES a
where a.period = 2019
group by a.Item

Je dois également ajouter le NOMBRE d'éléments dans la table WAREHOUSE - également très simple en soi, mais pas tellement en essayant de les combiner en un résultat de requête.

select count(a.Item), a.Item, count(b.Item) from SALES a
left join WAREHOUSE b on a.Item = b.Item

where a.period = 2019
group by a.Item

Celui ci-dessus gâcherait le résultat en raison de l'effet multiplicateur JOIN de la table WAREHOUSE. Quelle serait la meilleure façon d'atteindre le résultat ci-dessous? Y a-t-il un moyen efficace de faire cela?

Item    count_period    current_warehouse
A            2                 3
B            1                 
VBoka

Vous devez d'abord regrouper et filtrer les données de la première table, puis les joindre à la deuxième table. Comme ça:

select A.item, A.count_period, count(W.item) current_warehouse
from (select S.item, max(S.Period) Period, count(S.Period) count_period    
      from SALES S
      where S.Period = 2019
      group by S.item) A
left join WAREHOUSE W on A.Item = W.Item
group by A.item, A.count_period;

Une autre façon est:

select A.item, A.count_period, B.current_warehouse from 
(select S.item, max(S.Period) Period, count(S.Period) count_period    
      from SALES S
      where S.Period = 2019
      group by S.item) A
left join       
(select W.item, count(W.item) current_warehouse
from WAREHOUSE W
group by W.item) B
on A.item = B.item

ou

select A.item, max(A.count_period), count(W.item) current_warehouse
from (select S.item, max(S.Period) Period, count(S.Period) count_period    
      from SALES S
      where S.Period = 2019
      group by S.item) A
left join WAREHOUSE W on A.Item = W.Item
group by A.item;

Ici, vous avez une DEMO où vous pouvez voir que les trois renvoient les mêmes données.

Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.

En cas d'infraction, veuillez [email protected] Supprimer.

modifier le
0

laisse moi dire quelques mots

0commentaires
connexionAprès avoir participé à la revue

Articles connexes

Requête SQL avec fonction d'agrégation sur la jointure gauche de la relation un-à-plusieurs

Fonction d'agrégation SQL avec champs XML

SQL : utilisez rank() avec la fonction d'agrégation

fonction d'agrégation avec jointure par date la plus récente Oracle

Jointure fenêtrée KDB avec fonction d'agrégation sur les colonnes des deux tables

Jointure SQL Server sur le résultat de la fonction d'agrégation

SQL Pivot avec colonnes générées dynamiques, fonction d'agrégation et colonnes sans agrégation

jointure interne avec des pipelines d'agrégation

SQL - Fonction d'agrégation de somme

Alias de fonction d'agrégation SQL

Ecrire SQL sans fonction d'agrégation

Joindre plusieurs colonnes en fonction de la fonction d'agrégation avec SQL

Fonction d'agrégation SQL sur le résultat d'une autre fonction d'agrégation

Utilisation de PIVOT avec SQL Server sans fonction d'agrégation

Requête SQL pour sélectionner une valeur de colonne avec une fonction d'agrégation?

Problèmes avec la fonction d'agrégation de somme SQL

Requête de mise à jour SQL avec fonction d'agrégation

Fonction d'agrégation Greenplum personnalisée avec fenêtre

Requête JPA avec fonction d'agrégation de comptage

Lignes d'agrégation Spark avec fonction personnalisée

fonction d'agrégation pandas avec plusieurs colonnes de sortie

comment utiliser NULLIF avec la fonction d'agrégation

PIVOT avec fonction d'agrégation calculée

Sql Server équivalent d'une fonction d'agrégation COUNTIF

agrégation imbriquée mongo avec jointure

Fonction d'agrégation non valide dans la clause ON - La jointure sur le chevauchement de tableaux/le tableau contient dans Snowflake SQL

Prédicats SQL par fonction d'agrégation

fonction d'agrégation en SQL récursif

Fonction d'agrégation sur plusieurs colonnes dans SQL Server

TOP liste

  1. 1

    Comment exécuter un fichier python avec des droits d'administrateur dans pycharm

  2. 2

    obtenir le nombre de marqueur affiché sur la carte

  3. 3

    comment obtenir un objet de requête dans les tests unitaires de django?

  4. 4

    Microsoft.WebApplication.targets

  5. 5

    Exécuter la requête externe pour chaque date obtenue à partir de la requête interne

  6. 6

    comment convertir une chaîne en un tuple dateutil jour de la semaine sans utiliser eval

  7. 7

    Dans les modèles Hugo, comment vérifier la longueur du tableau de fichiers JSON?

  8. 8

    Référencement des assemblys de structure .net 4.7 dans la solution .net core 2

  9. 9

    Comment ajouter un texte dans un texte Python/Tkinter

  10. 10

    mongo kafka connect source

  11. 11

    Comment obtenir l'intégration contextuelle d'une phrase dans une phrase à l'aide de BERT ?

  12. 12

    Recherche de dicton Jinja2 à l'aide d'une clé variable

  13. 13

    Vérifier la longueur du nombre à partir du message, puis utiliser la valeur dans l'instruction

  14. 14

    Laravel 8: Attempt to read property "id" on null

  15. 15

    Comment obtenir tous les champs d'un objet (y compris sa superclasse), à l'aide de l'API Mirrors de Dart?

  16. 16

    Comment convertir une chaîne en tuple en utilisant `reads`?

  17. 17

    Aide de variable de débogage pprint jinja2

  18. 18

    Comment changer le navigateur par défaut en Microsoft Edge pour Jupyter Notebook sous Windows 10 ?

  19. 19

    mauvaise valeur pour le type long: - Postgresql, Hibernate, Spring

  20. 20

    définir une propriété pour chaque nœud dans neo4j

  21. 21

    Impossible d'accéder à la vue personnalisée pendant le test de l'interface utilisateur dans XCode

chaudétiquette

Archive