【问题标题】:SQL Trying To Find The Average of Just 1 AttributeSQL 试图找到 1 个属性的平均值
【发布时间】:2021-01-02 11:43:02
【问题描述】:

在 SQL 中,我试图查找并列出租金高于平均租金的房屋的地址。所以我有一个 PropertyForRent 表,其中列出了不同的房屋和公寓出租。这是那张桌子:

relation

到目前为止,我已经编写了完整的 SQL 查询,但我不确定它是否真的符合我的预期。

这里是:

SELECT street, city, postcode, type, rent – (SELECT AVG (rent) FROM PropertyForRent WHERE type = ‘House’) AS avgRent
FROM PropertyForRent
WHERE rent >
    (SELECT AVG(rent)
    FROM PropertyForRent);

这是正确的语法吗?我可以在 SELECT AVG 中使用 WHERE 吗?还是有更好的方法来定义专门针对房屋的租金?我认为其余的都可以,但我不完全确定。

感谢您的帮助

【问题讨论】:

    标签: sql subquery average window-functions


    【解决方案1】:

    您可以在where 子句中使用子查询。但是,我认为您需要过滤房屋上的数据集,如下所示:

    select p.*
    from PropertyForRent p
    where 
        p.type = 'House'
        and p.rent > (select avg(p1.rent) from PropertyForRent p1 where p1.type = 'Rent')
    

    这可能用窗口函数更简单地表达:

    select *
    from (
        select p.*, avg(rent) over() avg_rent
        from propertyForRent p
        where type = 'House'
    ) p
    where rent > avg_rent
    

    【讨论】:

    • 如果我遵循这个权利(我是 SQL 新手),它的作用是从 PropertyForRent 中选择所有值大于房屋平均租金的条目?它选择所有使用 * 对吗?
    • @OnlyMessiah:它选择所有租金高于平均house租金的house
    • 好吧,这实际上比我一开始尝试做的要干净。我真的很感激!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-25
    • 1970-01-01
    • 1970-01-01
    • 2018-07-12
    • 2021-04-03
    • 1970-01-01
    相关资源
    最近更新 更多