2016-11-30 6 views
0

Каков правильный синтаксис для отображения данных из всех записей с помощью GROUP (или DISTINCT) и AVG?Функция SQL AVG

Мои данные выглядит следующим образом: ИМЯ ТАБЛИЦЫ: Pensje КОЛОННЫ: ID, Компания, Должность, зарплата

Example: 
ID Company Position Salary 
1  Atari  Designer 24000 
2  Atari  Designer 20000 
3  Atari  Programmer 35000 
4  Amiga  Director 40000 

Мне нужно организовать данные таким образом (только записи из 1 компании должны быть отображены)

Position a , average Salary from all the records with same Company and Position 
Position b , average Salary from all the records with same Company and Position 

Ex. Atari 

Designer, 22000 
Programmer, 35000 

My SQL выглядит следующим образом:

SELECT Position, AVG(Salary) 
FROM Pensje 
WHERE Company = %s 
GROUP BY Position 
ORDER BY Position ASC 

В приведенном выше примере «Position» отображается правильно, «зарплата» не отображается на всех, в то время как после удаления AVG() отображается, но только первая позиция содержится в таблице

Большое спасибо за не торопитесь, чтобы помочь мне!

+0

'Company =% s' -> Должно быть' LIKE', но .. что вы ожидаете получить? Для этого фильтра нет записи. – sagi

+1

В предложении 'WHERE' вы должны использовать' WHERE Company LIKE '% s'' not '=' То, как вы его написали, должно привести к результатам, которые вы хотите, поэтому я не понимаю, почему он не работает должным образом для вас , Вы также можете захотеть получить псевдоним ваших результатов AVG(), таких как «AVG (Salary) AS Average_Salary», иначе ваша колонка будет перехватывать без имени. –

+1

ЭТО БЫЛО АЛИАС! Спасибо, MCP_infiltrator! – Piotrek

ответ

1

Проводка ответа от MCP_infiltrator который помог:

В вашей ИНЕКЕ вы должны использовать ГДЕ Компания LIKE «% s» не = Путь вы его написали, должны производить результаты, которые вы хотите, чтобы я этого не делают понять, почему он не работает должным образом для вас. Вы также можете захотеть получить псевдоним ваших результатов AVG(), таких как AVG (Salary) AS Average_Salary, иначе ваша колонка будет перехватывать без имени.