简体   繁体   English

在mysql中使用group by的平均值

[英]using average with group by in mysql

I have three table我有三张桌子

EMPLOYEE table with ID and NAME
COMPANY table with ID and NAME
and 
SALARY table with EMPLOYEE_ID, COMPANY_ID and SALARY

I wanted to print the name of every company where the average salary is greater than or equal to 40000我想打印平均工资大于或等于 40000 的每个公司的名称

My query is我的查询是

Select distinct COMPANY.NAME from COMPANY,SALARY,EMPLOYEE WHERE SALARY.COMPANY_ID=COMPANY.ID and (select avg(SALARY) from SALARY,EMPLOYEE WHERE SALARY.EMPLOYEE_ID=EMPLOYEE.ID) >=40000;

You could group by the company name and have the condition in the having clause:您可以通过公司名称族且具有在条件having条款:

SELECT   c.name
FROM     company c
JOIN     salary s ON c.id = s.company_id
GROUP BY c.name
HAVING   AVG(salary) >= 40000
SELECT DISTINCT COMPANY.NAME FROM COMPANY INNER JOIN SALARY ON COMPANY.ID = SALARY.COMPANY_ID INNER JOIN EMPLOYEE ON EMPLOYEE.ID = SALARY.EMPLOYEE_ID GROUP BY COMPANY.NAME HAVING AVG(SAL)>=40000

SELECT T1.NAME FROM COMPANY AS T1 INNER JOIN (SELECT COMPANY_ID, AVG(SALARY) AS avgSalary FROM SALARY GROUP BY COMPANY_ID) AS T2 ON T1.ID = T2.COMPANY_ID WHERE T2.avgSalary >= 40000;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM