2016-06-30 14 views
1

Я пытаюсь написать запрос в Oracle, который вернет максимальное значение. У меня 3 стола Employee, клиент, заказы.sql oracle max (sum)

SELECT a.ID_Employee, a.NAME, a.SURNAME, SUM(c.value) AS "value" FROM Employee a, CUSTOMER b, ORDERS c WHERE a.ID_Employee = b.ID_Employee and b.ID_CUSTOMER = c.ID_CUSTOMER group by a.ID_Employee, a.NAME, a.SURNAME ; 

Результат вопросов:

id_Employess Name Surname Value 
7654   KENNETH MARTIN 27348 
7555   DANIEL PETERS 11060 
7820   PAUL ROSS 20796,8 
7844   MARY TURNER 58055,9 
7560   SARAH DUNCAN 36191,2 
7521   CYNTHIA WARD 9984,2 
7499   KEVIN ALLEN 7870,8 
7789   LIVIA WEST 32274,2 
7557   KAREN SHAW 33655,65 

И мне нужно максимальное значение из этого результата должно быть:

id_Employess Name Surname Value 
7844   MARY TURNER 58055,9 

ответ

1

просто использовать rownum после заказа

select * from (
     select ID_Employee, NAME, SURNAME, value, rownum rn 
     from (
     SELECT a.ID_Employee, a.NAME, a.SURNAME, SUM(c.value) AS "value" 
      FROM Employee a, CUSTOMER b, ORDERS c 
     WHERE a.ID_Employee = b.ID_Employee and b.ID_CUSTOMER = c.ID_CUSTOMER 
     group by a.ID_Employee, a.NAME, a.SURNAME 
     order by 4 desc 
     ) 
    ) where rn = 1 
+0

У меня есть 1 вопрос о вашем ответе, почему <заказ на 4>? – Igorles

+0

'ORDER BY 4' означает заказ по четвертому столбцу в предложении select. Таким образом, это то же самое, что и «ORDER BY value». – MT0

0

Может быть, этот запрос

select * 
from 
     (SELECT 
     a.ID_Employee 
     , a.NAME 
     , a.SURNAME 
     , SUM(c.value) AS "value" 
     FROM Employee a, CUSTOMER b, ORDERS c 
     WHERE a.ID_Employee = b.ID_Employee 
     and b.ID_CUSTOMER = c.ID_CUSTOMER 
     group by a.ID_Employee, a.NAME, a.SURNAME) 
where value = (SELECT SUM(c.value) 
     FROM Employee a, CUSTOMER b, ORDERS c 
     WHERE a.ID_Employee = b.ID_Employee 
     and b.ID_CUSTOMER = c.ID_CUSTOMER 
     group by a.ID_Employee, a.NAME, a.SURNAME);