我正在使用mysql中的聚合函数并遇到了一个问题:我想在列中取最大值并将其与最大值附加的ID号一起显示。
所以,我有几个专栏。一个包含一个ID号,一个包含工作小时数,一个包含筹集的资金(它是一个虚构的志愿者组织的测试数据库)。基本上,我想接受那些志愿服用最多时间的人,并显示他们使用身份证号码工作的小时数。
我可以使用以下代码显示最长时间:
SELECT MAX(HoursWorked) AS 'Most Active' FROM HoursWorked
然而,当我尝试添加一个功能来找到该ID号时,我得到一个我不想要的错误或ID号(我知道它是我不想要的那个,因为我事先查看了表格并知道哪个ID号是最大小时数。
如何用它来解决错误?
答案 0 :(得分:0)
我的想法是分两步完成
这可以使用以下语句使用子查询来完成:
SELECT id, name, HoursWorked FROM HoursWorked where HoursWorked = (select max(HoursWorked) from HoursWorked);`
在子查询中,您正在使用聚合函数max()查找HoursWorked的最大值,然后在主查询中,您尝试查找HoursWorked值等于此先前找到的最大值的所有行。
通过这种方式,您可以确定两名或更多志愿者最活跃的情况(相同的工作小时数)
答案 1 :(得分:-1)
如果您没有按任何字段进行分组,那么您可以按降序排序选择最高b
,如下所示:
HoursWorked