检索每月和每年工资最高的行

Retrieve rows with highest salary per month and year

我需要这样做,但我不知道。我有这个 table.

SSN | SALARY  |   MONTH YEAR
1234   1881,33     01     2008
8762   2578        01     2008
8726   2183,6475   01     2008
2321   1745,8525   01     2008
3123   1639,2      01     2008
1934   2572        01     2008

是否可以select从所有年份的月份中找出薪水较高的人?在这种情况下,2008 年 1 月是 8762。

您可以使用 keep:

select year, month, max(salary) as salary,
       max(ssn) over (dense_rank first order by salary desc) as max_ssn
from (select to_char(l.rep_date, 'YYYY') as year, to_char(l.rep_date, 'MM') as month,
             l.SSN, (SUM(c.WAGE)- SUM(c.SALARY/(8*20))) as salary 
      from rep_lines l join
           costs c
           on l.job = c.cat_num and
              to_char(c.year) = to_char(l.rep_date, 'YYYY')
     )
group by year, month
order by year, month;
SELECT *
FROM   (
  SELECT t.*,
         ROW_NUMBER() OVER ( PARTITION BY year_month
                             ORDER BY money DESC ) AS rn
  FROM   (
    SELECT A.ssn,
           SUM(B.WAGE)- SUM(B.SALARY/(8*20)) AS money,
           TRUNC( rep_date, 'MM' ) AS year_month
    FROM   REP_LINES A 
           INNER JOIN COSTS B
           ON (    A.JOB=B.CAT_NUM
               and B.YEAR = EXTRACT( YEAR FROM A.REP_DATE ) )
    GROUP BY A.ssn,
           TRUNC( rep_date, 'MM' )
  ) t
)
WHERE  rn = 1;

你可以试试:

SELECT 
  MONTH
  , YEAR
  , FIRST_VALUE(SALARY) OVER (PARTITION BY MONTH,YEAR ORDER BY SALARY DESC)
  , FIRST_VALUE(SSN) OVER (PARTITION BY MONTH,YEAR ORDER BY SALARY DESC)
FROM your_table;