【发布时间】:2019-02-28 01:03:38
【问题描述】:
我有一个员工评估记录表,该表与另一个包含评估主题的表相关,它有 3 种评估类型,例如:
- 负数和正数(分别在表“-3、-2”中表示为整数值)。
- No & Yes(分别在表“-1, 0”中表示为整数值)。
- 从 1 到 5 的值(表示为具有相同值的整数)。
所以这是表格设计的一个例子:
--------------------
| evaID | int |
--------------------
| employeeID | int |
--------------------
| evaRec | int |
--------------------
这是表格数据的示例:
-------------------------------
| evaID | employeeID | evaRec |
-------------------------------
| 1 | 00001 | -3 |
-------------------------------
| 17 | 00001 | -2 |
-------------------------------
| 19 | 00001 | -2 |
-------------------------------
| 19 | 00001 | -1 |
-------------------------------
| 16 | 00002 | 3 |
-------------------------------
| 16 | 00005 | 0 |
-------------------------------
现在我想要的是根据类型选择特定员工的所有记录的总和作为评估的百分比,但将 3 种类型分开,例如前 (与该表数据无关) em>:
- 阴性和阳性类型:20% / 80%
- 否和是类型:30% / 70%
- 1、2、3、4或5型:10% / 50% / 5% / 15% / 20%
所以基本上我希望 select 语句返回 6 个浮点值,表示前面提到的所有类型的百分比(floatNegative、floatNo、float1、float2、float3 和 float4),如果可能的话 - 但我知道这很难,因为我还无法弄清楚它背后的逻辑 - 我希望它返回第 7 个浮点值,代表所有评价的百分比,比如差评和好评,但我还不知道如何混合“是或否”是 2 个因素百分比,“1,2,3,4 或 5”是 5 个因素百分比!
所以稍后在我的 c# 代码中,我将使用如下选择结果:
- floatNegative = 20(负数 = 20%,正数 = 100-floatNegative = 80%)
- floatNo = 30(No = 30% 和 Yes= 100-floatNo = 70%)
- 以此类推,还有 5 个其他数字...
这意味着根据上述评估类型,我有 3 组独立的百分比计算。
所以最后,如果我从上表中对员工“00001”运行查询,我会得到结果:
- floatNegative = 33.3
- floatPositive = 66.6
- floatNo = 100.0
因为他有 1 x “负面”记录 (-3) 和 2 x “正面”记录 (-2),总共 3 条记录。 (在“负面/正面”类型的评估组中),并且他有 1 x “否”记录(-1),但没有任何 ”是”记录 (0),这就是“否”的结果为 100% 的原因(在“否/是”类型的评估组中)。如果他没有任何记录(如 1、2、3、4、5),我不关心其他类型的结果,它可能是负浮点值,所以我可以在我的 c# 代码中区分它以找出他还没有关于这种类型的记录,并在我的 asp.net 最终标记中隐藏了百分比指示符文本。
【问题讨论】:
-
想要的结果真的很有帮助。
-
@GordonLinoff 编辑了问题,请再次阅读并感谢。
标签: c# sql asp.net sql-server