2016-11-30 93 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 

我的SQL是这样的:

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

在上述示例中“位置”被正确地显示,“工资”完全不显示,在显示除去AVG()之后,但仅第一个位置在表中找到

非常感谢花时间帮助我!

+0

'公司=%s' - >应该是'LIKE',但是..你期望得到什么?没有适合此过滤器的记录。 – sagi

+1

在你的'WHERE'子句中,你应该使用'WHERE Company LIKE'%s''不是'='你写它的方式应该产生你想要的结果,所以我不明白它为什么不能正确地为你工作。您可能还想像'AVG(Salary)AS Average_Salary'这样的'AVG()'结果别名,否则您的列将无名称地进行组合。 –

+1

它是别名!谢谢MCP_infiltrator! – Piotrek

回答

1

发布从MCP_infiltrator回答这帮助:

在您的WHERE子句中,你应该使用WHERE公司LIKE“%s”的不等于你拥有了它编写的方式,应该产生你想要的结果,所以我不理解为什么它不适合你。 您可能还想将您的AVG()结果别名为AVG(Salary)AS Average_Salary,否则您的专栏将无名称地重组。