【问题标题】:how to count rows and still display all rows? mysql如何计算行数并仍然显示所有行? mysql
【发布时间】:2023-03-22 04:22:01
【问题描述】:

您好,我正在尝试计算每个员工的薪水行数。

我有两张桌子。

表员工

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;

我尝试了自我加入,但没有成功。

提前致谢!

【问题讨论】:

    标签: mysql


    【解决方案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
      

      【讨论】:

        猜你喜欢
        • 2023-04-01
        • 1970-01-01
        • 2019-07-07
        • 1970-01-01
        • 1970-01-01
        • 2015-10-21
        • 1970-01-01
        • 1970-01-01
        • 2011-09-02
        相关资源
        最近更新 更多