Compter les combinaisons de lignes dans un groupe avec SQL

Jasdefer

J'ai une table avec les commandes et leurs produits:

+-------+---------+
| Order | Product |
+-------+---------+
| A     |       1 |
| A     |       2 |
| A     |       2 |
| A     |       3 |
| B     |       1 |
| B     |       3 |
| B     |       4 |
| C     |       1 |
| C     |       3 |
+-------+---------+

Je veux compter les occurrences, lorsque deux produits sont commandés ensemble pour identifier les combinaisons de produits populaires:

+---------------+----------------+-------+
| First product | Second product | Count |
+---------------+----------------+-------+
|             1 |              2 |     1 |
|             1 |              3 |     3 |
|             1 |              4 |     1 |
|             2 |              3 |     1 |
|             2 |              4 |     0 |
|             3 |              4 |     0 |
+---------------+----------------+-------+
Gordon Linoff

Utilisez une auto-jointure et un groupe en:

select op1.product, op2.product, count(*)
from orderproduct op1 join
     orderprodut op2
     on op1.order = op2.order and
        op1.product < op2.product
group by op1.product, op2.product
order by count(*) desc;

Si vous voulez les combinaisons les plus populaires, je ne vois pas quelles combinaisons avec 0seraient nécessaires, donc cela ne les inclut pas.

Ce qui précède compte toutes les combinaisons (multiples dans une commande). Si vous souhaitez compter les commandes, utilisez count(distinct):

select op1.product, op2.product, count(distinct op1.order)
from orderproduct op1 join
     orderprodut op2
     on op1.order = op2.order and
        op1.product < op2.product
group by op1.product, op2.product
order by count(*) desc;

Ou utilisez select distinctavec des sous-requêtes. Le plus rapide dépend du nombre de produits en double dans les commandes.

Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.

En caso de infracción, por favor [email protected] Eliminar

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados

Comment compter les combinaisons uniques de lignes dans le groupe dataframe par?

Compter les lignes contenant des combinaisons dans un dataframe dans R

Comment compter les observations avec une certaine valeur dans un groupe de manière conditionnelle?

compter les lignes avec la valeur maximale dans le groupe par

Compter les lignes dans chaque groupe lorsque la condition est satisfaite Sql Server

Compter les combinaisons sur des paires de colonnes dans un tableau numpy

Compter le nombre de lignes entre deux dates PAR ID dans un groupe Pandas

Compter les combinaisons de niveaux variables dans R

Un moyen plus rapide de filtrer et de compter les lignes dans les pandas

Comment compter les éléments imbriqués dans un groupe de deuxième niveau?

Comment additionner toutes les combinaisons de lignes dans Matrix?

compter les lignes avec une condition de colonne spécifique dans R

Comment diviser une liste en n groupes dans toutes les combinaisons possibles de longueur de groupe et d'éléments au sein d'un groupe dans R?

Concaténer les lignes de table SQL avec des conditions dans un seul texte

Sélectionnez uniquement les lignes avec un état commun à partir de la table dans SQL Server

Compter les lignes dans la partition avec Trier par

comment compter les lignes avec des cellules vides dans datagridview

Groupe de sommation SQL dans un groupe

compter toutes les lignes entre un commentaire multiligne avec c ++

Compter le nombre de lignes avec NaN dans un pandas DataFrame?

Compter les x premiers entiers d'un groupe de valeurs

Compter les valeurs par lignes dans un bloc de données R

Comment puis-je compter les lignes de plusieurs csv qui se trouvent dans un dossier?

Les "n" premières lignes de chaque groupe utilisant dplyr - avec un nombre différent par groupe

Comment obtenir un ensemble de toutes les combinaisons dans R avec des conditions données?

Comment compter les lignes dans un vecteur logique

Comment compter les étudiants qui ont obtenu des notes égales et afficher les notes de ce groupe dans SQL Server

SQL Nombre de lignes dans un groupe dans une séquence

Obtenez les N plus grandes lignes de chaque groupe dans un DataFrame pandas

TOP Lista

CalienteEtiquetas

Archivo