0

我有apartment一张有很多列的表。一些公寓共享priceidlayout列值。area但是,对于(劣质工艺),它们仍然具有不同的价值。

我需要:

1) 用idlayout和对公寓进行分组price,得到它们的最小值和最大值area,并计算每组中公寓的数量。

2) 列出每组的单独公寓。

这可以通过一个查询来完成吗?我什至应该尝试这样做吗?

我尝试了什么:

我得到了第一部分的查询,但我想不出一种方法来列出结果集中的公寓。

SELECT COUNT( * ), price, rooms, MAX( area ) AS areaMax, MIN( area ) AS areaMin
FROM apartment
GROUP BY price, layout_idlayout
ORDER BY rooms ASC, price ASC 
4

2 回答 2

2

您可以使用group_concat列出组中的所有值:

SELECT  layout_idlayout
,       price
,       group_concat(name) as ListOfNames
,       MAX(area) as MaxArea
FROM    apartment
GROUP BY 
        price
,       layout_idlayout
于 2013-05-04T12:31:24.393 回答
1

您需要使用 JOIN:

SELECT apartment.*, areaMax, areaMin, cnt
FROM
  apartment INNER JOIN (
    SELECT
      idlayout, price, MAX(area) AS areaMax, MIN(area) AS areaMin, COUNT(*) cnt
    FROM
      apartment
    GROUP BY
      price, layout_idlayout) ap_grp
  ON apartment.idlayout=ap_grp.idlayout AND apartment.price=ap_grp.price

这将显示所有公寓数据,以及具有相同价格和 idlayout 的其他公寓的 MAX、MIN 和 COUNT。

于 2013-05-04T12:29:58.880 回答