【发布时间】:2015-04-27 07:38:39
【问题描述】:
用我最简单的方式来说明:
表用户: (没什么特别的)
-----------------------------------------
UserID | Fullname
-----------------------------------------
User1 | JohnDoe
-----------------------------------------
User2 | PeterPan
-----------------------------------------
User3 | BatMan
-----------------------------------------
表组
----------------------------------------
GroupID | Group_Name |
----------------------------------------
1 | Manager |
----------------------------------------
2 | Reviewer |
----------------------------------------
表员工
----------------------------------------
UserID | GroupID |
----------------------------------------
User1 | 1 |
----------------------------------------
User2 | 2 |
----------------------------------------
User3 | 2 |
----------------------------------------
表格项目分配
--------------------------------------------------------
ID | ProjectID | Reviewer | Status
--------------------------------------------------------
1 | 1 | User2 | Approved
--------------------------------------------------------
2 | 2 | User2 | Disapproved
---------------------------------------------------------
3 | 2 | User2 | Approved
---------------------------------------------------------
4 | 3 | User3 | Disapproved
---------------------------------------------------------
5 | 3 | User3 | Disapproved
---------------------------------------------------------
6 | 3 | User3 | Disapproved
---------------------------------------------------------
7 | 3 | User3 | Approved
---------------------------------------------------------
数据简介详情:
- User2 和 User3 是审阅者
- 在Project Assignment表下,Project可以多次提交,直到Reviewer设置Status已批准(请参阅下面的注释)
- > 注意: 在某些情况下,状态可以被批准两次,这就是为什么 我需要计算已批准项目的数量而不是未批准项目的数量。
问题:
我想查询 Project Assignment 表以获取 Approved(Status) Projectgroup by ProjectID 每个 Reviewer 的百分比
现在,我得到的是所有项目的总数,而不是每个审阅者分配的项目
我的 Sql 查询:
SELECT `Reviewer`,
`ProjectID`,
COUNT(*) as NumberOfTimesProjectSubmitted ,
Round((Select COUNT(*) From `Project Assignment`
Where Status='Approved') / (COUNT(*)) *100,2) AS Approval_Percentage
FROM `Project Assignment`
GROUP by ProjectID
预期的查询结果大概是这样的:
-----------------------------------------------------------------------
Reviewer | ProjectID | NumberOfTimesProjectSubmitted | Approval Percentage
-----------------------------------------------------------------------
User2 | 1 | 1 | 100.00
-----------------------------------------------------------------------
User2 | 2 | 2 | 50.00
-----------------------------------------------------------------------
User3 | 3 | 4 | 25.00
------------------------------------------------------------------------
对不起,如果我错过了一些细节,但这就是我说明我要解决的问题的方式。我确实尝试了几次(几乎已经一天了),但没有得到结果。我尝试了单独的查询,但仍然得到项目总数,而不是在 Reviewer 下的每个项目。
【问题讨论】:
-
将 Reviewer 添加到 group by 子句