【问题标题】:How do I get employee details if they are earning more than their paylevel?如果他们的收入超过他们的工资水平,我如何获取员工详细信息?
【发布时间】:2017-01-31 00:07:07
【问题描述】:

我有一个包含员工的数据库,所有员工都有根据他们的经验(从雇用日期开始计算)的薪酬水平,但有些人的收入更高,因为以前的经验。我有两个表员工表(有关员工的详细信息,包括他们的工资级别编号)和工资级别表(工资级别的详细信息) 多年的经验是计算出来的。我的问题是让所有收入超过他们工资水平的员工说他们的收入。一切都与视图相关联。

SELECT Accountant_Name, Hire_Date, Pay_Level_Name, 'Pay_Level_No'
CONVERT (INT,Experience_in_Years) as 'XP in years'
FROM accountant_view;

那么我如何查看每个员工的工资水平是否与该特定工资水平编号的工资匹配(工资在工资水平表中) 我不确定我是否以正确的方式询问,但我们将不胜感激。

CREATE TABLE paylevel
(paylevel_no SMALLINT IDENTITY (1,1),
paylevel_name VARCHAR (25) NOT NULL,
annual_pay MONEY NOT NULL,
min_experience CHAR (3) NOT NULL,

CONSTRAINT paylevel_pk PRIMARY KEY (paylevel_no)
);
GO

CREATE TABLE accountant
(accountant_id INT NOT NULL IDENTITY (01, 1),
branch_id SMALLINT NOT NULL,
paylevel_no SMALLINT NOT NULL,
first_name VARCHAR (20) NOT NULL

【问题讨论】:

  • 因此您正试图让所有这些员工都拥有以前的经验。对吗?
  • 我试图让所有收入超过其指定工资水平的用户。所以是的,我试图让用户有以前的经验,但用户是否有以前的经验不在数据库中。只有他们为公司工作的年数。谢谢。
  • 你能给出两张表的结构吗?
  • @WaqasShabbir 我做到了。对不起,我没有早点。
  • 你的表结构我不清楚,首先它没有给出该会计师(员工)的任何当前工资,其次在 ACCOUNTANT 表中,hireDate 在哪里?

标签: sql-server


【解决方案1】:

鉴于您提供的信息(不幸的是没有实际的表架构),以下将作为指南。

基本前提是员工的实际工资需要通过匹配每个表中的工资水平来与预期工资进行比较:

SELECT emp.ID, emp.PayLevel, emp.ActualPay, pl.PayLevel, pl.Pay_Level_Name, pl.ExpectedPay
FROM Employees emp
INNER JOIN Paylevels pl ON pl.PayLevel = emp.PayLevel
WHERE  emp.ActualPay > pl.ExpectedPay

希望对你有所帮助


拉文达,
使用更新的架构,这是您可能使用的语句。我推测在会计表的某个地方有一个包含实际工资值的列。

SELECT ac.accountant_id, ac.first_name, ac.branch_id, pl.paylevel_name, pl.annual_pay, ac.actual_pay
FROM accountant ac
INNER JOIN paylevel pl ON ac.paylevel_no = pl.paylevel_no
WHERE ac.actual_pay > pl.annual_pay

请提供实际的薪酬栏或来源,以便更好地完善,

谢谢,

【讨论】:

    猜你喜欢
    • 2020-09-10
    • 2019-12-01
    • 1970-01-01
    • 2020-10-08
    • 1970-01-01
    • 2022-08-21
    • 2015-02-19
    • 2023-03-23
    相关资源
    最近更新 更多