1

任何机构都可以帮助我吗?我想从我的表中查询,目的是显示哪些员工正在销售超过 100 件。我已经完成了那个查询和工作,

但是当我想显示每个员工(销售超过 100 件商品)的最后一次销售时,问题就出现了

我有表 TBL_SALES 之类的

no   employee_id   name          pieces   sl_time
---|-------------|-------------|--------|----------
1  |     1       | bungdito    | 60     | 2012-03-29 22:20
2  |     1       | bungdito    | 40     | 2012-03-05 18:00
3  |     1       | bungdito    | 50     | 2012-02-18 08:00
4  |     2       | addheat     | 120    | 2012-02-12 09:30
5  |     3       | angga       | 20     | 2012-01-18 10:45
6  |     4       | dimas       | 50     | 2012-01-01 08:30

当我使用这样的查询时

select * from 
( 
  select EMPLOYEE_ID, NAME, sum(PIECES) PIECES from 
  ( 
    select EMPLOYEE_ID, NAME, PIECES
    from DB_SCHEMA.TBL_SALES 
  )  
  group by EMPLOYEE_ID, NAME
) where PIECES > 100

我有这个正确的结果

 employee_id   name          pieces 
-------------|-------------|--------
     1       | bungdito    | 150    
     2       | addheat     | 120    

上面的结果是正确的

我需要的是每个员工最后一次交易时间的完整

我试过查询但仍然不正确

select * from 
( 
  select EMPLOYEE_ID, NAME, sum(PIECES) PIECES, SL_TIME

  ( 
    select EMPLOYEE_ID, NAME, PIECES,(select max(WAKTU) SL_TIME from DB_USER.TR_PELANGGARAN where TB_SALES.EMPLOYEE_ID = EMPLOYEE_ID from TB_SALES) SL_TIME
    from DB_SCHEMA.TBL_SALES 
  )  
  group by EMPLOYEE_ID, NAME, SL_TIME
) where PIECES > 100

使用该查询我仍然有错误的结果(请参阅 bungdito 和 addheat 之间的 sl_time 相同),例如:

    employee_id   name          pieces   sl_time
   -------------|-------------|--------|----------
        1       | bungdito    | 150    | 2012-03-29 22:20
        2       | addheat     | 120    | 2012-03-29 22:20

我需要的是这样的:

employee_id   name          pieces   sl_time
-------------|-------------|--------|----------
     1       | bungdito    | 150    | 2012-03-29 22:20
     2       | addheat     | 120    | 2012-02-12 09:30
4

2 回答 2

1
select * 
from 
( 
  select EMPLOYEE_ID, NAME, sl_time
        , sum(PIECES)  over(partition by EMPLOYEE_ID)  SUM_PIECES 
        , max(sl_time) over(partition by EMPLOYEE_ID)  last_sl_time
  from       
    DB_SCHEMA.TBL_SALES 
) 
where SUM_PIECES > 100
and    last_sl_time = sl_time
;
于 2012-08-28T12:29:52.803 回答
1

试试这个:

  select EMPLOYEE_ID, NAME, sum(PIECES) PIECES, MAX(SL_TIME)
  from DB_SCHEMA.TBL_SALES   
  group by EMPLOYEE_ID, NAME
  having sum(PIECES) > 100
于 2012-08-28T12:35:39.637 回答