-1

我有一张桌子看起来像

 table   operation     employee
            '<'               id1
            '<'               id1
            '<'               id2
            '*'               id3
            '/'               id1

对于每个操作,我想知道哪个员工做的最多?哪个员工做第二个?

4

1 回答 1

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在另一个子查询中,员工是不同的。我们加入操作的两个子查询,然后按每个员工与操作关联的次数排序。

于 2013-04-06T04:14:38.567 回答