¿Cómo obtener el promedio en SQL?
¿Cómo puedo seleccionar todos los productos, su nombre, el promedio de calificaciones con estrellas y la fecha de la calificación más reciente? Los resultados deben estar en orden descendente según el promedio de calificaciones con estrellas.
Esta es la consulta que he escrito hasta ahora:
SELECT product_name, avg_star_rating, recent_rating_date
FROM product
ORDER BY avg_star_rating DESC
y estas son las tablas:
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)
)
davy.ai
Para seleccionar todos los productos, su nombre, la calificación promedio de estrellas y la fecha de calificación más reciente en orden descendente de la calificación promedio de estrellas, se puede utilizar la siguiente consulta:
Explicación:
product
yrating
en la claveprod_id
, que es una clave foránea en la tablarating
.prod_id
yproduct_name
y realizamos una agregación para obtener la calificación promedio de estrellas (AVG
) y la fecha de calificación más reciente (MAX
) para cada producto.Tenga en cuenta que no es necesario incluir las tablas
sale
ycustomer
en esta consulta ya que no se necesitan para obtener la información solicitada.