SQL选择最大计数
表中有三列:id、streetname和count。对于某些ID,分配的街道名称不止一个。Count告诉每个街道分配给id的频率。如何仅获取id和计数最高的streetname 示例表:SQL选择最大计数,sql,select,count,max,Sql,Select,Count,Max,表中有三列:id、streetname和count。对于某些ID,分配的街道名称不止一个。Count告诉每个街道分配给id的频率。如何仅获取id和计数最高的streetname 示例表: id streetname count 1 street1 80 1 street2 60 1 street3 5 2 street4 10 2 street5 6 结果应该
id streetname count
1 street1 80
1 street2 60
1 street3 5
2 street4 10
2 street5 6
结果应该是这样的:
id streetname
1 street1
2 street4
提前谢谢 我不认为没有唯一的列名“id”是正确的方法,但您的问题应该通过以下查询得到解决:
SELECT id, streetname FROM table ORDER BY count DESC
您没有指定正在使用的数据库,但应该能够使用以下数据库:
select t1.id, t1.streetname, t1.count
from yourtable t1
inner join
(
select id, max(count) max_count
from yourtable
group by id
) t2
on t1.id = t2.id
and t1.count = t2.max_count
看。注意,您必须使用MySQL的backticks或数据库用于转义保留字的任何字符转义count
列名。我的建议是避免在列名和表名中使用保留字 试试这个
SELECT T1.id, T1.streetname FROM TableName T1
INNER JOIN
(
SELECT id, MAX(count) maxcnt FROM TableName
GROUP BY id
) T2
ON T1.id= T2.id AND T1.count = T2.maxcnt
从表ORDER中按COUNT DESC选择ID、STREETNAME,然后只取一行欢迎使用堆栈溢出!请通过添加适当的标记(Oracle、SQL Server、MySQL等)来指定目标RDBMS。可能有一些答案利用了并非普遍支持的语言或产品功能。此外,通过使用特定的RDBMS标记,您的问题可能会得到更适合回答它的人的注意。您所说的计数是什么意思?行数?
计数
字段的总和?count
字段本身?谢谢您的评论!我不熟悉SQL,但没有其他方法可以解决此类问题。。。我刚刚将表从ESRI ArcGIS导出到Microsoft Access。他没有指定要选择多少记录,不是吗?我这样回答只是为了选择按计数排序的id和streetname。如果我误解了这个问题,我道歉。谢谢,这正是我所需要的!但是现在还有另一个问题:所有具有相同最大值的ID都不应该显示,因为它们不是唯一的…@user272421我不知道你的意思,但是如果你有多个具有相同街道名称和计数的ID,那么你应该能够使用distinct。你能用更多的示例数据编辑sql fiddle()来进一步解释这个问题吗?我根据自己的需要更改了sql fiddle()。ID和计数相同,但街道不同。应在结果中消除ID 3,以便只有唯一的ID 1和2。关于ID 3,我不能做任何陈述,因为结果的权重是相同的。顺便说一句,SQLFiddle是一个不错的工具@用户272421您使用的是什么数据库?因此,如果您有两个具有相同计数的ID,您不希望它返回?是的,这似乎有效…=)谢谢!我目前正在与微软Access合作。