#sql #database #postgresql
#sql #База данных #postgresql
Вопрос:
Как я могу выбрать все продукты, их название, средний рейтинг звезд и дату последнего рейтинга? Результаты должны быть в порядке убывания среднего звездного рейтинга. вот что я делал до сих пор
SELECT product_name, AVG(rating_stars) FROM rating INNER JOIN product ORDER BY AVG(rating_stars) DESC
и это база данных
CREATE TABLE product ( prod_id varchar(15), product_name varchar(30), product_price double precision, product_manufacturer varchar(30), PRIMARY KEY (prod_id) ) CREATE TABLE customer ( cust_id varchar(15), customer_name varchar (30), customer_adress varchar (30), PRIMARY KEY (cust_id) ) CREATE TABLE rating ( prod_id, cust_id, rating_date date not null, rating_stars int (5), PRIMARY KEY (rating_date), FOREIGN KEY (prod_id) REFERENCES Products(prod_id), FOREIGN KEY (cust_id) REFERENCES customer(cust_id) ) CREATE TABLE sale ( sale_id, prod_id, cust_id, sale_quantity int, sale_cost double precision, PRIMARY KEY (sale_id), FOREIGN KEY (prod_id) REFERENCES Products(prod_id), FOREIGN KEY (cust_id) REFERENCES customer(cust_id) )
Ответ №1:
Вы можете использовать группировку по и макс.
SELECT product_name, AVG(rating_stars), max(rating_date) FROM rating INNER JOIN product on rating.prod_id = product.prod_id GROUP BY product_name ORDER BY AVG(rating_stars) DESC
Комментарии:
1. это говорит мне, что результатов не найдено
2. Вы уверены, что в ваших таблицах есть достоверные данные?? обновите свой вопрос добавьте надлежащий образец данных и ожидаемый результат в виде табличного текста