Oracle SQL如何先进行分组再比较频率

时间:2013-04-06 03:54:30

标签: sql oracle group-by

我的表格看起来像

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

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

1 个答案:

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