J'essaie à Athena de produire uniquement des utilisateurs qui ont une valeur spécifique en eux mais pas dans toutes les lignes
supposons que j'ai le tableau ci-dessous.
Je souhaite que tous les utilisateurs ont une valeur '100' dans au moins une de leurs lignes, mais aussi avoir dans d'autres rangées de valeur différente de 100. p> donc dans cet exemple je voudrais Pour obtenir uniquement les utilisateurs a et d parce que seulement les avoir 100 et aucun 100. p> J'ai essayé peut-être regrouper par l'utilisateur et créer un tableau de valeurs par utilisateur, puis vérifier si la matrice contient 100 mais je ne gère pas le faire presto.
Aussi, j'ai pensé à convertir des lignes en colonnes, puis à vérifier si l'une des colonnes est égale à 100. p> Ces solutions sont trop complexes? Quiconque sait comment les implémenter ou quelqu'un a une meilleure solution plus simple? P> p>
3 Réponses :
Les utilisateurs qui ont au moins une valeur de 100 peuvent être trouvés avec ce SQL: mais je suppose que vous êtes après tous les tunples d'utilisateur et de valeur où l'utilisateur a au moins une Valeur de 100, cela peut être accompli en utilisant la requête ci-dessus dans une requête légèrement plus complexe: p>
Vous pouvez utiliser la sous-requête comme ci-dessous pour atteindre votre sortie requise =
SELECT * FROM your_table WHERE User IN( SELECT DISTINCT User FROM your_table WHERE Value = 100 )
Si vous voulez juste que les utilisateurs, j'irais pour l'agrégation: si 100 code> est la valeur maximale possible, ceci peut être simplifié à: p>