0
votes

Comment sélectionner des enregistrements contenant une valeur spécifique pour le terme efficace maximum pour un groupe (Oracle SQL)

J'ai une table avec les valeurs suivantes:

Subject Course  Term    Campus
ACCT    2301    201980  
ENGL    1010    202080  


5 commentaires

Mais dans votre échantillon, l'astr 276T 201910 WOW contient des wow, alors pourquoi cette valeur ne doit pas être dans votre résultat attendu ??


Il ne le veut pas en résultat parce que ce n'est pas le terme maximal


Parce que la durée maximale pour AR 276T est 201980 (et il n'y a pas de campus «WOW» pour ce terme).


Je crée ce tableau dans une base de données maintenant afin que je puisse essayer de le comprendre


J'y ai pensé tellement, je pense que je suis mort du cerveau! Je parie que je manque quelque chose d'évident! Merci!


3 Réponses :


0
votes

Ceci devrait le faire: xxx

Exécution d'échantillon: xxx


0 commentaires

0
votes

D'accord, j'ai donc eu votre réponse que vous voulez, mais cela n'aime pas le groupement si je le fais comme ça. Espérons que cela vous amène dans la bonne direction.

SELECT t.Subject, t.Course, t.Term, t.Campus
FROM test t
    INNER JOIN (SELECT Subject, MAX(Term) AS MaxTerm
                    FROM test
                    GROUP BY Subject) q
        ON t.Subject = q.Subject
            AND t.Term = q.MaxTerm
WHERE Campus = 'WOW';


2 commentaires

Merci, Kyle! Je vais jouer avec ce que vous avez entré ici. J'ai besoin d'avoir des campus autres que le "WOW" pour le sujet / cours / terme (parce que nous voulons réellement tous les autres, sauf celui-ci), mais, espérons-le, c'est un début.


Heureux que je puisse aider, je viens de commencer à me rendre à SQL à mon stage cet été et moi si cela vous aide du tout, c'est une victoire pour moi :)



0
votes

Voici votre requête, plaine et belle avec une seule fonction analytique:

with xyz as (
    select X.*,
        dense_rank() over (partition by X.subject, X.course order by X.term desc) as terms_in_group_ordered_desc
    from test X
)
select subject, course, term
from xyz
where terms_in_group_ordered_desc = 1
    and campus = 'WOW'
;


3 commentaires

Merci, nop77svk. Cela a sélectionné les bonnes valeurs dont j'avais besoin, mais j'ai peut-être besoin de faire un suivi avec vous.


NOP77SVK, puis-je ajouter au problème? Comment choisir (pour le sujet, le cours et la date d'entrée en vigueur) tous les campus, à l'exception du paramètre_campus (qui est «WOW» dans mon exemple)? Mon objectif serait donc d'avoir pour l'ACCT 2301 201980 Campus 63M et pour l'ENGL 1010 202080 Campus WSW (ou tout autre campus attribué à ce sujet / cours / terme)?


@wandasoozq, ce serait une question différente, veuillez donc poster un autre, vous pouvez même mettre un lien vers cette question originale dans le nouveau. (Vous allez même vous procurer des compétences utiles supplémentaires pour poser des questions bien formées Stackoverflow.com.)