
SQL分组查询最大值
本问题旨在从表中提取特定数据,目标是为每个唯一的“Name”字段找到具有最高“Total”值的记录。 这与查找每个组的最后一条记录的问题有所不同。
以下是两种实现该目标的SQL查询方法:
方法一:子查询
<code class="language-sql">SELECT Name, Top, Total
FROM sometable
WHERE Total = (
SELECT MAX(Total)
FROM sometable i
WHERE i.Name = sometable.Name
);</code>此查询使用子查询来查找每个Name组中的最大Total值,然后只选择与该最大值匹配的记录。
方法二:自连接
<code class="language-sql">SELECT Name, Top, Total
FROM sometable
INNER JOIN (
SELECT MAX(Total) AS Total, Name
FROM sometable
GROUP BY Name
) AS max ON max.Name = sometable.Name AND max.Total = sometable.Total;</code>此查询使用INNER JOIN将sometable与一个子查询连接,该子查询为每个Name组计算最大Total值。 INNER JOIN条件确保只选择Total值与每个组的最大值匹配的记录。
两种方法都能得到相同的结果:
| Name | Top | Total |
|---|---|---|
| cat | 3 | 20 |
| horse | 4 | 4 |
| dog | 6 | 9 |
以上是如何在 SQL 中查找每个名称组的最大总数?的详细内容。更多信息请关注PHP中文网其他相关文章!