0

スキーマ:

Student(studentid,name,age)
Course(coursename,dept)
enroll(studentid,course,grade)

を見つける必要があります。各年齢グループの学生は、政治学と歴史のために取ったコースの平均成績を見つけ、各年齢グループの最大平均成績を持つ学生の名前を返す必要があります

これまでの私の試みは次のとおりです。

select max(grade), age, name
from (
    select name, age, grade
    from student s, (
            select avg(grade) as grade, e.studentid
            from enroll e
            where dname in ('Political Sciences', 'History')
            group by studentid
            ) as temp
    where s.studentid = temp.studentid
) temp1
group by temp1.age;

構文的にではなく、論理的に正しいかどうかを知りたいです。

4

2 に答える 2

1

クエリに関するいくつかのヒントを次に示します。

  1. テーブルのエイリアスには注意してください。あなたがそれらをあなたに引き継ぐことを確認してくださいSELECT
  2. SELECT集計で使用されている列のみを含めることができます ( GROUP BY)。GROUP BY temp1.ageしたがって、できません。SELECT age, name
于 2012-09-18T18:04:44.230 に答える
0

「Age」が「Age Group」に相関し、個々の学生の年齢を参照していない限り、SQL の背後にあるロジックは確かに見えます。

于 2012-09-18T18:05:28.420 に答える