-5
votes

Pour afficher le nom, le nom du département, les marques de haut performeurs dans l'ingénierie logicielle, commandée par le nom du département à l'ordre croissant

Écrivez une requête pour afficher le nom, le nom du département et les marques des meilleurs interprètes de l'ingénierie du logiciel, commandé par le nom du département à l'ordre croissant.

J'ai utilisé ci-dessous la requête, mais que je n'ai pas eu le résultat souhaité. moi deux étudiants de différents département avec les mêmes marques dans le génie logiciel xxx

renvoyer le schéma


5 commentaires

Il n'y a pas assez d'informations ici pour vous aider. Veuillez fournir des données d'échantillonnage et des relations pertinentes entre les tables (si ce n'est pas évident). Comme il s'agit de devoirs, veuillez également fournir votre tentative de résoudre.


@Jnevill maintenant j'ai fourni la requête que j'ai construite moi-même. S'il vous plait verifiez maintenant.


Pourquoi votre résultat est-il faux? La tâche dit "Top Performer (s)" afin que cela s'attend à ce qu'il puisse y avoir une cravate. Sinon, comment choisiriez-vous entre les deux?


@Alexpoole Je ne sais pas pourquoi c'est faux. S'il vous plaît voir le schéma


Jetez un coup d'œil à Stackoverflow.com/help/on-topic - cette partie: "Questions demandant une aide aux devoirs doit inclure un Résumé du travail que vous avez fait jusqu'à présent pour résoudre le problème et une description de la difficulté que vous rencontrez la résolution. "


4 Réponses :


0
votes

Cette partie nécessite une modification:

 and (c.subject_id, c.value) 
     in (select subject_id, max(a.value) 
           from mark a
           join subject d using (subject_id)
           where d.subject_name = 'Software Engineering'
           group by subject_id)


1 commentaires

Votre solution donne des entrées ambiguës. Ne travaille pas proprement.



3
votes

explication à votre problème et à votre code:

1 .by Utilisation de la sous-requête Vous n'entrez que le nombre maximum et vérifiez s'il est présent mais la valeur (marque de la valeur sujet) peut être présent pour d'autres sujets, c'est pourquoi vous avez deux sorties au lieu d'un.

2 .Vous n'avez pas rejoint la table de sujet et n'a pas vérifié si sujet est l'ingénierie logicielle.

solution au problème est le suivant: xxx


0 commentaires

0
votes
    select student_name,department_name,value 
    from Student 
    inner join department using(department_id)
    inner join mark using(student_id)
    inner join subject using(subject_id)
    where value = (select max(value) from mark join subject using(subject_id) where lower(subject_name)='software engineering')
    and lower(subject_name)='software engineering'
    order by department_name;

1 commentaires

Veuillez expliquer ce que vous avez changé vers la requête originale et pourquoi. Cela est plus utile de comprendre le raisonnement des changements par opposition à donner la réponse.



0
votes

Sélectionnez Student_Name, Nom de département, valeur du département de jointure de l'étudiant S sur s.department_id = d.department_id jointure Mark m sur S.Student_id = s.student_id Joindre sujet su sur m.subject_id = su.subject_id où sujette_name = "Génie logiciel" et valeur = (sélectionnez max (valeur) à partir de Mark M1 Join Sujet su1 sur m1.subject_id = su1.subject_id où sujette_name = "Génie logiciel") commander par 2 ASC;


1 commentaires

En règle générale, veuillez mettre votre code SQL dans le bloc de code. Vous pouvez utiliser Google pour le marquage de Stackoverflow. Deuxième chose. Ajoutez quelques explications avec votre code.