如何计算行数并仍然显示所有行? 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的主要内容,如果未能解决你的问题,请参考以下文章

MySql 的行数并插入到计数的表中

Kendo Grid按行数自动调整大小

MySQL分页时统计总记录行数并使用limit返回固定数目的记录

PySpark:计算列子集的最大行数并添加到现有数据帧

#yyds干货盘点#cmd命令find

如何计算文件的所有行数