Как рассчитать среднее значение столбца внутри запроса и отобразить его

#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. Вы уверены, что в ваших таблицах есть достоверные данные?? обновите свой вопрос добавьте надлежащий образец данных и ожидаемый результат в виде табличного текста