Mysql 显示附加到它的最大值和ID号
我正在mysql中使用聚合函数,但遇到了一个问题:我想获取列中的最大值,并将其与最大值附加到的ID号一起显示 所以,我有几个专栏。一个包含身份证号码,一个包含工作时间,一个包含募集资金(这是一个虚构志愿者组织的测试数据库)。基本上,我想带上自愿工作时间最多的人,并用ID号显示他们工作的小时数 我可以使用以下代码显示最大小时数:Mysql 显示附加到它的最大值和ID号,mysql,Mysql,我正在mysql中使用聚合函数,但遇到了一个问题:我想获取列中的最大值,并将其与最大值附加到的ID号一起显示 所以,我有几个专栏。一个包含身份证号码,一个包含工作时间,一个包含募集资金(这是一个虚构志愿者组织的测试数据库)。基本上,我想带上自愿工作时间最多的人,并用ID号显示他们工作的小时数 我可以使用以下代码显示最大小时数: 从工时中选择最大(工时)作为“最活跃的” 然而,当我尝试添加一个函数来查找ID号时,我要么得到一个错误,要么得到一个我不想要的ID号(我知道这是我不想要的ID号,因为我事
从工时中选择最大(工时)作为“最活跃的”
然而,当我尝试添加一个函数来查找ID号时,我要么得到一个错误,要么得到一个我不想要的ID号(我知道这是我不想要的ID号,因为我事先查看了表,知道哪个ID号是最长小时数的ID号)
如何使用它来修复错误?如果您没有按任何字段分组,则可以通过按如下降序排序来选择最高的
工作小时数:
SELECT TOP 1 ID, HoursWorked FROM HoursWorked ORDER BY HoursWorked DESC
我的想法是分两步做
- 找到最大值
- 查找HoursWorked=最大值的行
这可以使用下面的语句和子查询来完成:
SELECT id, name, HoursWorked FROM HoursWorked where HoursWorked = (select max(HoursWorked) from HoursWorked);`
在子查询中,您使用聚合函数max()查找HoursWorked的最大值,然后在主查询中,您尝试查找HoursWorked值等于先前找到的最大值的所有行
通过这种方式,您可以确定两名或两名以上志愿者最活跃的情况(工作小时数相同)这是否被视为一种聚合功能?这是一个类,我必须使用聚合函数(不是我想做的,但我想这样做,因为这是我说过的我可以在整个课程中使用数据库的事情之一)不,这不会被视为聚合。每个志愿者只有一个小时工作的条目吗?您可能需要SUM而不是MAX。@JacobH每个志愿者在HoursWorked列中有一个条目,当我只想显示MAX编号时,会弹出正确的条目。然而,如果它没有说明它属于谁,这在现实世界中是没有帮助的,这正是我想要做的。我尝试了类似的方法,但是我没有正确的语法。哦,学习的乐趣。谢谢:)