我有一张桌子看起来像
table operation employee
'<' id1
'<' id1
'<' id2
'*' id3
'/' id1
对于每个操作,我想知道哪个员工做的最多?哪个员工做第二个?
试试这个:
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
在另一个子查询中,员工是不同的。我们加入操作的两个子查询,然后按每个员工与操作关联的次数排序。