MySQL - 按一列分组并获得最低值

标签 mysql group-by greatest-n-per-group

我正在尝试返回按列分组的每组数据的最低值。

在英语中,我想按住宿将我的数据分组,但只返回每个住宿的最低人均价格。

我在 MySQL Group By get title column with smallest date value 找到了一个类似的例子(我在下面的尝试)


SELECT t1 . * FROM tbl_TravelFeed AS t1
    INNER JOIN
    (SELECT pk_id, MIN( perperson ) AS perperson FROM tbl_TravelFeed
        GROUP BY accommodation
        ORDER BY perperson) AS t2    
   ON t1.pk_id = t2.pk_id AND t1.perperson = t2.perperson

这似乎几乎可以工作,但它会按最低 ID 而不是 perperson 返回记录。我不明白为什么能够纠正它。

我正在努力完成周二(2012 年 3 月 27 日)的大学作业,希望它能正常工作,但从大局来看这并不重要。

我尝试了很多方法来做到这一点,包括使用 Distinct。上面的查询似乎最接近它。

非常感谢任何帮助。

亚伦

最佳答案

这是未经测试的,但这是我在 MySQL 中编写它的方式,你将我的子查询放在 WHERE 语句中的原因是这样我可以轻松地从该查询创建一个 VIEW 并始终将结果存储在单独的 View 中所以我可以对此提出质疑。

SELECT * FROM tbl_Travelfeed AS t
WHERE perperson =
(
  SELECT MIN(perperson)
  FROM tbl_Travelfeed
  WHERE accommodation = t.accommodation
)

关于MySQL - 按一列分组并获得最低值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9845082/

相关文章:

mysql - 导入两个数据集后连接表的最有效方法

php - MYSQL加入帮助。根据单独评论表中的评论数量获取结果?

sql - 有没有办法用 t-sql 创建 "pivot group"列?

python - 通过 python 优化 pandas group

mysql - 从内部连接中检索不同的记录

sql - 在 where 部分使用 max() 的替代方法?

mysql - sqoop 日期到 impala 时间戳

mysql - 通过与结果匹配的方式控制组上返回的行

sql - 检索每个客户的最新记录

java jdbc嵌套异常