SQL 从另一个表中选择平均值

mat*_*los 4 sql select average

我花了很多时间来构建这个选择,但我无法解决它。我有2张桌子。第一个表称为 car 并具有 PK(主键)id_car 和另一个列名称等。第二个表称为 rating 并具有列 id_rating (PK)、id_car (FK) 和 rating_value(整数)。正如您所怀疑的那样,一辆车可以有不止一个咆哮。我想选择所有汽车,我想知道每辆车的平均评分。最后,我想按这个平均降序对结果进行排序。我正在尝试这样的事情:

    SELECT id_car, name, average
    FROM car C, rating R 
    WHERE C.id_car = R.id_car 
    ORDER BY (average) (
        SELECT AVG(rating_value) AS average 
        FROM rating R
        WHERE C.id_car = R.id_car)
Run Code Online (Sandbox Code Playgroud)

但它不起作用。

Kaf*_*Kaf 5

对于SQL Server; 另外我建议你使用JOIN而不是WHERE table1, table2..

SELECT C.id_car, name, AVG(rating_value) AS average
FROM car C JOIN rating R 
      ON C.id_car = R.id_car
GROUP By C.id_car, name
ORDER BY average DESC
Run Code Online (Sandbox Code Playgroud)

  • 只是为了添加更多信息:如果您想包括那些尚未评级的汽车,请使用 LEFT JOIN。 (2认同)