如何计算行数并仍然显示所有行? mysql
Posted
技术标签:
【中文标题】如何计算行数并仍然显示所有行? mysql【英文标题】:how to count rows and still display all rows? mysql 【发布时间】:2016-01-15 21:52:39 【问题描述】:您好,我正在尝试计算每个员工的薪水行数。
我有两张桌子。
表员工
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;
我尝试了自我加入,但没有成功。
提前致谢!
【问题讨论】:
【参考方案1】:您将希望在薪金表和雇员表之间执行内部联接
您还想包含一个嵌套的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
【讨论】:
【参考方案2】:这是可以为您提供所需结果的 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
【讨论】:
以上是关于如何计算行数并仍然显示所有行? mysql的主要内容,如果未能解决你的问题,请参考以下文章