我有一个包含许多列的apartment
表。部分公寓共享price
和idlayout
列值。但是,它们仍然具有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
答案 0 :(得分:2)
您可以使用group_concat
列出组中的所有值:
SELECT layout_idlayout
, price
, group_concat(name) as ListOfNames
, MAX(area) as MaxArea
FROM apartment
GROUP BY
price
, layout_idlayout
答案 1 :(得分: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。