0
votes

Filtrer une colonne basée sur une certaine valeur dans l'une des rangées de SQL ou Presto Athena

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. xxx

donc dans cet exemple je voudrais Pour obtenir uniquement les utilisateurs a et d parce que seulement les avoir 100 et aucun 100.

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.

Ces solutions sont trop complexes? Quiconque sait comment les implémenter ou quelqu'un a une meilleure solution plus simple?


0 commentaires

3 Réponses :


0
votes

Les utilisateurs qui ont au moins une valeur de 100 peuvent être trouvés avec ce SQL: xxx

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: xxx


0 commentaires

0
votes

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
)


0 commentaires

0
votes

Si vous voulez juste que les utilisateurs, j'irais pour l'agrégation: xxx

si 100 est la valeur maximale possible, ceci peut être simplifié à: xxx


0 commentaires