我的表格看起来像
table operation employee
'<' id1
'<' id1
'<' id2
'*' id3
'/' id1
对于每项操作,我想知道哪个员工做得最多?第二个是哪个员工?
答案 0 :(得分:0)
试试这个:
SELECT operations.operation, employees.employee, employees.rank
FROM (
SELECT t1.operation
FROM table t1
GROUP BY t1.operation
) operations INNER JOIN (
SELECT t2.employee, t2.operation, COUNT(1) rank
FROM table t2
GROUP BY t2.employee
) employees ON operations.operation = employees.operation
ORDER BY operations.operation, employees.rank DESC
对于每项操作,我们都会获得每个相应员工的计数。由于子查询中的GROUP BY
,操作是不同的,并且由于其他子查询中的GROUP BY
,员工是不同的。我们在操作中加入两个子查询,然后按每个员工与操作关联的次数进行排序。