首页 > 解决方案 > 对于每位员工,他们被推荐了多少次酌情加薪?

问题描述

我有两张表,一张称为 tblPerformanceReview,一张称为 tblEmployee。我试图弄清楚每个员工被推荐了多少次酌情加薪。tblPerformanceReview 有一个名为 Discretionary 的列,它可以让您知道该员工是否被推荐不加薪。如果他们被推荐,就会有 1,如果没有,就会有 0。我试图找到一种方法来计算每个员工被推荐加薪的次数。我希望它显示员工的名字以及他们被推荐加薪的次数。两个表都通过冷 IDEmployee 字段连接。

给我一个错误的示例代码

    SELECT tblEmployee.FirstName,COUNT(tblPerformanceReview.Discretionary) 
FROM tblPerformanceReview,tblEmployee INNER JOIN 
tblEmployee 
ON tblPerformance.IDEmployee=tblEmployee.IDEmployee WHERE Discretionary='1' 
group by IDEmployee;

标签: sqlsqlite

解决方案


我假设这tblPerformance确实应该tblPerformanceReview在您的查询中。

我相信你想要:

SELECT e.IDEmployee, e.FirstName, 
       COUNT(pr.Discretionary) 
FROM tblEmployee e LEFT JOIN
     tblPerformanceReview pr
     ON pr.IDEmployee = e.IDEmployee AND
        pr.Discretionary = 1
GROUP BY e.IDEmployee, e.FirstName;

笔记:

  • 对查询使用表别名更容易读写。
  • 这使用一个LEFT JOIN. 您的问题意味着您想要所有员工,而不仅仅是那些至少有一次酌情加薪的员工。
  • '1'看起来像一个数字,所以我去掉了引号。如果该列确实包含一个字符串,则保留该字符串。
  • 员工可以有相同的名字,所以我在和idEmployee中都包含了。SELECTGROUP BY

推荐阅读