sql - SQL查询emp表中的工资
问题描述
我有一张员工表。我想知道具体的年度工资,或者今年是 2019 年,我想知道我在 2018 年向员工支付了多少工资(单个或全部员工)。那么如何编写查询。
解决方案
你必须得到一年工作的百分比,然后乘以薪水。如果joined_date 早于当年1 月,请使用“1.00”。
由于您没有指定 SQL 类型,因此我选择了我最熟悉的 MSSQL。
下面是一个使用 MSSQL 的示例:
DECLARE @yearToFindSalaryFor INT = 2018
DECLARE @dateEndOfSalaryYear DATE = ('01/01/' +
CONVERT(VARCHAR(5), (@yearToFindSalaryFor + 1)))
DECLARE @dateStartOfSalaryYear DATE = ('01/01/' +
CONVERT(VARCHAR(5), (@yearToFindSalaryFor)))
SELECT E1.YEARS_WORKED_FOR_YEAR,
E2.sal * E1.YEARS_WORKED_FOR_YEAR AS SALARY_FOR_YEAR, E1.eid
FROM
(
SELECT
CASE WHEN joining_date > @dateEndOfSalaryYear
THEN 0
WHEN joining_date < @dateStartOfSalaryYear THEN 1
-- cast one of the numbers as decimal, otherwise MSSQL will spit out an int value (1 or 0)
-- since DATEDIFF will give INT value not decimal, we have to get 'days' and divide by 365
ELSE DATEDIFF(day, joining_date, @dateEndOfSalaryYear)
/ CAST(365 AS DECIMAL(4, 0))
END
AS YEARS_WORKED_FOR_YEAR, eid FROM Employees
) AS E1
JOIN Employees E2 ON E1.eid = E2.eid
推荐阅读
- http-method - 如何在 FastAPI 中进行发布/重定向/获取(PRG)?
- django - password_reset 电子邮件模板不呈现 html 标记
- c - 让方法随处可用
- windows - Firebase 登录断言失败:new_time >= loop->time,文件 c:\ws\deps\uv\src\win\core.c,第 309 行
- sql - 创建表时关键字“主要”附近的错误语法
- javascript - 如果两个输入字段中的两个值相同,则在 jquery 中创建显示弹出消息
- php - 单击按钮时PHP不回显
- android-studio - 插件与发现的新版本不兼容:Firebase 服务
- android - 哪些类应该有权访问 ViewModel
- java - 将环境变量添加到 Spring 的 application.properties