2012-08-28 25 views
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 

我有这个正确的资源上述ULT

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

的结果是正确的

但什么我需要完成每个员工的最后交易时间

我试图让查询但仍与不正确

使用3210

该查询我仍然有错误的结果(见sl_time是bungdito和addheat之间的相同),如:

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 

回答

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 
+0

你是什么意思,MAX中的B(B.SL_TIME)? – bungdito

+0

只是一个错字,我删除它。 – davidmontoyago

+0

它的作品,当我删除[有件> 100],与[有件> 100]我有错误“不是一个GROUP BY表达式”..为什么? – bungdito

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 
; 
+0

惊人的,它的作品..我告诉过你,如果我是oracle的新手:p – bungdito

+0

我不认为嵌套查询是必要的。 – davidmontoyago

+0

该查询*不等同于原始查询。在应用WHERE子句之前,SUM和上一次都是*。解决方案很简单。 。 。只需在子查询中移动WHERE子句即可。 –