0

私は2つのテーブルを持っています:

DRIVER(Driver_Id,First name,Last name,...);

PARTICIPANT IN CAR ACCIDENT(Participant_Id,Driver_Id-foreign key,responsibility-yes or no,...).

ここで、責任が「YES」である事故にどのドライバーが何回参加したかを調べる必要があります。これは私がしました:

Select Driver_ID, COUNT (Participant.Driver_ID)as 'Number of accidents'
from Participant in car accident
where responsibility='YES'
group by Driver_ID
order by COUNT (Participant.Driver_ID) desc 

ただし、最初のテーブルからドライバーの姓名を追加する必要があります(内部結合を使用すると思います)。集計関数にも GROUP BY 句にも含まれていないため、方法がわかりません。助けてください :)

4

2 に答える 2

1

ご想像のとおり、内部結合を使用する必要があります。また、名と姓が SELECT の一部になったため、これらの列も GROUP BY に含める必要があります。

Select Driver_ID, First_name, Last_name COUNT (Participant.Driver_ID) as "Number of accidents"
from "Participant in car accident" join Driver on "Participant in car accident".Driver_ID = Driver.Driver_ID
where responsibility='YES'
group by Driver_ID, First_name, Last_name
order by COUNT (Participant.Driver_ID) desc

これは宿題ですか?

于 2012-06-01T04:38:17.303 に答える
0

インラインテーブルを使用できます。

SELECT d.driver_first_name,
       d.driver_last_name,
       r.incident_count
FROM  DRIVER d
INNER JOIN (SELECT driver_id, 
                   count(*) incident_count
            FROM PARTICIPANT_IN_CAR_ACCIDENT
            WHERE responsibility = 'YES'
            GROUP BY driver_id) r
    ON d.driver_id = r.driver_id
ORDER BY r.incident_count DESC

動作するはずです。

于 2012-06-01T04:41:05.227 に答える