web-dev-qa-db-fra.com

Combinaison distincte de deux colonnes

J'essaie actuellement de trouver des combinaisons distinctes dans une table car deux des colonnes ont une relation plusieurs à plusieurs.

Les données concernent toutes les politiques de sauvegarde exécutées sur des clients en particulier et peuvent être résumées comme suit:

enter image description here

La réponse que je voudrais générer pour le tableau ci-dessus serait 7 car il y a ce nombre de combinaisons distinctes.

Quelqu'un at-il une idée de la façon dont cela pourrait être fait? J'ai essayé d'expérimenter des nombres imbriqués et des valeurs distinctes (où j'ai pu filtrer sur une colonne mais pas sur les deux).

5
TheGrew

Vous pouvez compter des éléments distincts en exécutant:

select count(distinct policy_id, client_id) from policy_client;

Une autre option serait de regrouper et de compter que:

select count(*) from (select policy_id, client_id from policy_client group by 1,2) a;

Exécutez les deux versions et voyez celle qui fonctionne le mieux sur votre ensemble de données.

Un moyen très rapide mais pas totalement précis si vous avez une clé (policy_id et client_id), vous pouvez également vérifier la cardinalité de cet index mais c'est un nombre approximatif et non exact.

5
Károly Nagy

Je pense que le plus simple serait:

SELECT COUNT(DISTINCT policy, client) 
         AS distinct_combinations
FROM table_name ;
3
ypercubeᵀᴹ