mysql - How to use aggregation functions with multiple joins? -
I need to find the maximum work experience of the employee and my query that meets all the companies of Meet This Return But I want only one record with maximum experience UPD: This query finds the number of employees of each company Can I simplify it? You do not need aggregation work ( You can simply add The entire query might be: @update Yes you can make your query easier. First of all, you can call After this, because you already have only employees (The employee line should be present to join the company), you do not need to use the meet . This is my table:
Make Tables Company (id INT not original primary key AUTOCCREMENT, name VARCHAR (250)) Faucet; Create table worker (id INT not original primary key AUTO_INCREMENT, name VARCHAR tap (250)); Make Table Company (Employee) (Company_ID not INT, Employee_ID not INT, Rent_Data Date, Error Zero, Regina_Data DATE DEFUILT Faucet, Foreign Key (company_id) Reference Company (ID), Foreign Key (employee_id) Reference Person (ID);
select Employee. Name, company Join the company (company.id = company_employee.company_id) employee at JOIN company_employee (company_employee.employee_id = employee.id) where the employee can join the company, company_employee.hire_date, company_employee.resign_date, (company_employee.resign_date - company_employee.hire_date). Name = 'Meet'
+ ------ + -------------- + ----------- + - ----------- + ----------------- + | Name | company_name | Rent_date | resign_date | Experience_de + ------ + -------------- + ----------- + ------------- + - ---------------- + | Meet | IBM | 1997-04-17 | 1998-03-08 | 325 | | Meet | IBM | 2012-04-03 | 2014-02-15 | 683 | | Meet | IBM | 2000-08-10 | 2003-01-01 | 874 | + ------ + -------------- + ----------- + ------------- + - ---------------- +
+ - ---- + ----- + ------------ + ------------ + ----- + | Meet | IBM | 2000-08-10 | 2003-01-01 | 874 | + ------ + ----- + ------------ + ------------ + ----- +
SELECT company.name, COUNT (company_employee.employee_id) from the company LEFT JOIN company_id = company_employee.company_id GROUP BY company.name at company_employee Hagueing COUNT (company_employee.employee_id) & gt; 0;
MAX ) because you are here Also,
ORDER BY and
LIMIT sections like:
ORDER BY experience_days DESC LIMIT 1
Select the employee. Name, company Name, company_employee.hire_date, company_employee.resign_date, (company_employee.resign_date - company_employee) company joint company joint company admin (company.id = company_moribi.com) or as employee of company (company_my employee employee / id = employee .ID). / Pre>
JOIN You can use
instead of LEFT
HAVING condition.
SELECT company.name Company company.Momorporary.EMPAG_ID Company company company company company id.money company.morphy.company_id group company company name;
Comments
Post a Comment