Итак, у меня есть две таблицы;
course
, что есть столбцы id, description, units,
и price_per_unit.
student
, который имеет столбцы id, name,
и course_id.
Я хочу SELECT
студента с самой высокой суммой платы за обучение (единицы * price_per_unit)
Я попробовал это SELECT STATEMENT;
SELECT student.name,
course.description,
course.units * course.price_per_unit AS "total_tuition_fee"
FROM student
LEFT JOIN course
ON course.total_tuition_fee = (SELECT MAX(course.total_tuition_fee) FROM course);
Но это не сработало, я использовал AS
для своего course.units * course.price_per_unit
и назвал его total_tuition_fee
но я не могу поместить его в свой аргумент ON
.
Ваш запрос немного испорчен. Сначала вам нужно согласовать право на участие, а затем заказывать сборы за обучение по убыванию.
SELECT student.name,
course.description,
course.units * course.price_per_unit AS "total_tuition_fee"
FROM student
INNER JOIN course
ON course.id = student.course_id
ORDER BY (course.units * course.price_per_unit) DESC
LIMIT 1;
Это позволит выбрать комбинацию студенческого курса с самой высокой суммой платы за обучение. LIMIT 1
выбирает первую запись в таблице, которая сортируется по продуктам единиц и цене за единицу.
Примечание. Это может быть медленнее, чем обычно, поскольку расчет выполняется дважды. Таким образом, вы можете создать подзаголовок со всеми тарифами, а затем выбрать тот, который имеет наибольшую плату:
SELECT x.student_name, x.course_description, x.total_tuition_fee
FROM
(SELECT student.name AS student_name,
course.description AS course_description,
course.units * course.price_per_unit AS "total_tuition_fee"
FROM student
INNER JOIN course
ON course.id = student.course_id) x
ORDER BY x.total_tuition_fee DESC
LIMIT 1;
total_tuition_fee
?units
иprice_per_unit
. Я хочу, чтобы иметь возможность узнать наибольшую сумму, не имея еще один столбец. @DhavalAsodariya