【问题标题】:How to calculate avg of column inside query and display it如何计算查询内列的平均值并显示它
【发布时间】:2022-01-05 08:01:27
【问题描述】:

如何选择所有产品、产品名称、平均星级和最近的评分日期?结果应按平均星级的降序排列。 这就是我到目前为止所做的

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)
)

【问题讨论】:

    标签: sql database postgresql


    【解决方案1】:

    你可以使用 group by 和 max

    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
    

    【讨论】:

    • 它告诉我没有找到结果
    • 您确定您的表中有有效数据吗?更新您的问题添加适当的数据样本和预期结果作为表格文本
    猜你喜欢
    • 2020-02-15
    • 1970-01-01
    • 1970-01-01
    • 2012-02-03
    • 2015-04-23
    • 2017-08-22
    • 2017-06-11
    • 2019-08-17
    • 1970-01-01
    相关资源
    最近更新 更多