2015-04-26 2 views
-4

Я хочу список сотрудников, которые работали над деятельностью, которая имеет самую высокую общую стоимость платежа.Хотите рассчитать высочайшую стоимость оплаты за стол?

не использовать такой код ... где actid = 151 ... ЭСТ

• Примечание: Total Pay работал на деятельности является сумма (общее количество отработанных часов * соответствие Почасовой Rate) (например, общее Плата за активность 151 составляет 10,5 часа @ $ 50,75 + 11,5 часа @ $ 25 + 3 часа @ $ 33,)

Вы должны использовать подзапрос в своем решении .

ACTID HRSWORKED HOURLYRATE Total Pay 
163  10    45.5  455 
163  8    45.5  364 
163  6    45.5  273 
151  5    50.75 253.75 
151  5.5   50.75 279.125 
155  10    30  300 
155  10    30  300 
165  20    25  500 
155  10    30  300 
155  8    27  216 
151  11.5   25  287.5 
151  1    33  33 
151  1    33  33 
151  1    33  33 

Вы потратили время и силы. Благодаря !!

+0

Сделайте представление, используя JOIN, и примените максимальное значение для столбца для этого представления. – akshay

+0

Вы должны сначала попробовать сами себе –

+3

Похоже, домашнее задание. – Devon

ответ

0

Без знания схемы, я могу только представить возможный эскиз (вы должны вычислить полную оплату и предоставить все необходимые соединения и предикаты):

SELECT DISTINCT(employee id) -- reconfigure if more then just employee id 
FROM <table(s)> 
[WHERE...] 
{ WHERE | AND } total pay = (SELECT MAX(total pay) 
          FROM <table(s)> 
          [WHERE...]); 

Я использовал DISTINCT, потому что это возможно, чтобы иметь более одного действия с тем же значением MAX и перекрывающимися сотрудниками. Если вы введете ACTID в вывод, то вам не понадобится DISTINCT, потому что один и тот же сотрудник не должен быть в проекте дважды (если только они не отслеживаются ролями в проекте, и в этом случае один сотрудник может иметь несколько ролей - все зависит от набора данных).

+0

Я не использую такой код, как ... где actid = 151 ... ect –

+0

Я немного смущен тем, о чем вы говорите. Если скобки и точки запутаны, то я извиняюсь (он основан на [форме Бэкуса-Наура] (http://docs.oracle.com/cd/B28359_01/server.111/b28286/ap_syntx002.htm#SQLRF55396), который является общим в базе данных синтаксис). Замените '' именами, если вам нужны дополнительные предикаты, поместите их там, где '[WHERE ...]' (квадратные скобки означают необязательные). Если вы уже использовали 'WHERE', вы используете' AND', (это то, что фигурные скобки и '|' означает). Это просто псевдокод, так как у меня нет никаких подробностей в вашей схеме, поэтому я не могу создать фактический SQL. –

Смежные вопросы