2016-01-15 2 views
0

привет, пытающийся подсчитать количество строк для каждого сотрудника для зарплаты.как подсчитывать строки и показывать все строки? mysql

У меня есть две таблицы для ex.

таблица сотрудников

id_____________name 

1..............sam 

2..............greg 

3..............vic 

4..............steve 

таблица заработной платы

id____________salary 

1.............10000 

1.............15000 

2.............30000 

3.............13000 

4.............90000 

4.............20000 

результат я нужен

id| name | salary| count 

1 | sam | 10000 | 2 

1 | sam | 15000 | 2 

2 | greg | 30000 | 1 

3 | vic | 13000 | 1 

4 |steve | 90000 | 2 

4 |steve | 90000 | 2 

в Подведите итог: у меня 4 сотрудника с прошлой зарплатой. Я пытаюсь создать запрос, который показывает список зарплат и сколько зарплат у сотрудника.

вот что я попробовал, но я получаю 6 для подсчета ...

create temporary table rates 
SELECT e.id, e.name, s.salary, count(*) as count 
FROM employee e 
INNER JOIN salary s ON e.id = s.id 
GROUP BY name, s.salary 
ORDER BY name; 

create temporary table sum 
select r.id, sum(count) as sum 
from rates r; 

select * from rates 
LEFT OUTER JOIN sum s ON r.id = s.id; 

Я пробовал себя присоединиться, но это не сработало.

Заранее благодарен!

ответ

0

Вы хотите, чтобы выполнить внутреннее соединение между заработной платой и сотрудниками таблицами

Вы также хотите включить вложенную SELECT заявления.

SELECT e.id, e.name, s.salary, 
(SELECT COUNT(*) FROM salary s 
     WHERE employee_id = id) as COUNT 
FROM employees e 
INNER JOIN salary s ON employees.id = salary.id 

Вот скрипка

http://sqlfiddle.com/#!9/b94ec/9/0

0

Вот код SQL Server, который может дать вам желаемые результаты.

select 
     s.empid, e.name, s.salary, 
     cnt.SalaryCount 
    from 
     salary s 
     inner join emp e on s.empid = e.id 
     outer apply 
     (select count(*) as SalaryCount from salary where empid = e.id) cnt 
Смежные вопросы