按组返回前n个平均值

时间:2012-06-06 01:43:52

标签: mysql sql

我有一个房地产交易数据库。用简单的英语,我试图写一个查询,找到每个城市最昂贵的N公寓楼。

我有以下相关领域:

Address
City
Sold Price
Sold Date

要解决这个问题,我的假设是我需要按地址和城市分组的平均售价,以N为限,并按平均价格排序。为了弄清楚哪些地址可能是公寓楼,人们会期望在很短的时间内将具有相同地址的大量交易作为公寓楼(地址不包括单位#)。因此,如果XYZ地址包含在定义的时间范围内的N个事务中,则将其假定为公寓楼。

披露:我在SQL中非常环保,所以到目前为止我所做的研究让我有些困惑。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

在不知道SQL的确切品牌的情况下,您可能需要查找一些语法,但这可能有效:(前10名,其中5个日期范围内的销售额)

 select top 10 address,city, soldCount from 

    (

    select 

    address, city, count(*) as soldCount, average(sold_price) as myAvg


    group by address, city
having soldCount > 5
    where sold_date between '2012-05-01' and '2012-05-15'
    ) mytable order by soldCount

引用此网站以获取有关Oracle等“top”的更多信息。 http://www.w3schools.com/sql/sql_top.asp

你可以在一个选择中完成所有这些但有时我使用这样的内部表来分离逻辑..计数(*)背后的想法只是意味着多少行