SQL - 如何计算每个项目的平均目标率
SQL - How to Calculate Average TargetRate for each project
对于这可能是一个基本问题提前致歉。我有一个包含项目的数据库,这些项目下面有阶段。
每个阶段都有一个我们希望实现的目标小时费率(这是在名为 TargetRate 的字段中输入的条目)。目标利率可以相同也可以不同,每个阶段都有一个。我正在尝试获取特定项目的平均目标费率。
数据集:
ProjectID
PhaseID
ProjectKey
TargetRate
(Comment)
12345
500
500
150
(Project)
12345
501
500
140
(Phase 1)
12345
502
500
155
(Phase 2)
12345
503
500
150
(Phase 3)
67890
100
100
200
(another project)
67890
101
100
205
(Phase 1 of the other project)
我写了一个简单的查询
SELECT AVG(prj_TargetRate)
FROM Projects
而且似乎 return 所有项目的所有目标率的平均值。我正在寻找单个项目的平均费率。
因此,对于上面 table 中的项目 12345,它应该 return 148.75。我如何让公式只计算相同项目 ID 的那些行?
你快到了。只需添加 group by 子句即可。
select ProjectId, avg(prj_TargetRate) FROM Projects
group by ProjectId
列名是prj_TargetRate
吗?或者它将是:
select ProjectId, avg(TargetRate) FROM Projects
group by ProjectId
DB-Fiddle:
架构和插入语句:
Create table Projects(ProjectID int, PhaseID int, ProjectKey int, TargetRate int, Comment varchar(50));
insert into Projects values(12345, 500, 500, 150, 'Project');
insert into Projects values(12345, 501, 500, 140, 'Phase 1');
insert into Projects values(12345, 502, 500, 155, 'Phase 2');
insert into Projects values(12345, 503, 500, 150, 'Phase 3');
insert into Projects values(67890, 100, 100, 200, 'another project');
insert into Projects values(67890, 101, 100, 205, 'Phase 1 of the other project');
查询:
select ProjectId, avg(TargetRate)Average_TargetRate FROM Projects
group by ProjectId
输出:
ProjectId
Average_TargetRate
12345
148
67890
202
db<>fiddle here
您可以在选择 AVG(TargetRate)
的同时 GROUP BY
ProjectID
字段。
SELECT
ProjectId,
AVG(TargetRate)AverageTargetRate,
FROM Projects
GROUP BY ProjectId;
对于这可能是一个基本问题提前致歉。我有一个包含项目的数据库,这些项目下面有阶段。
每个阶段都有一个我们希望实现的目标小时费率(这是在名为 TargetRate 的字段中输入的条目)。目标利率可以相同也可以不同,每个阶段都有一个。我正在尝试获取特定项目的平均目标费率。
数据集:
ProjectID | PhaseID | ProjectKey | TargetRate | (Comment) |
---|---|---|---|---|
12345 | 500 | 500 | 150 | (Project) |
12345 | 501 | 500 | 140 | (Phase 1) |
12345 | 502 | 500 | 155 | (Phase 2) |
12345 | 503 | 500 | 150 | (Phase 3) |
67890 | 100 | 100 | 200 | (another project) |
67890 | 101 | 100 | 205 | (Phase 1 of the other project) |
我写了一个简单的查询
SELECT AVG(prj_TargetRate)
FROM Projects
而且似乎 return 所有项目的所有目标率的平均值。我正在寻找单个项目的平均费率。
因此,对于上面 table 中的项目 12345,它应该 return 148.75。我如何让公式只计算相同项目 ID 的那些行?
你快到了。只需添加 group by 子句即可。
select ProjectId, avg(prj_TargetRate) FROM Projects
group by ProjectId
列名是prj_TargetRate
吗?或者它将是:
select ProjectId, avg(TargetRate) FROM Projects
group by ProjectId
DB-Fiddle:
架构和插入语句:
Create table Projects(ProjectID int, PhaseID int, ProjectKey int, TargetRate int, Comment varchar(50));
insert into Projects values(12345, 500, 500, 150, 'Project');
insert into Projects values(12345, 501, 500, 140, 'Phase 1');
insert into Projects values(12345, 502, 500, 155, 'Phase 2');
insert into Projects values(12345, 503, 500, 150, 'Phase 3');
insert into Projects values(67890, 100, 100, 200, 'another project');
insert into Projects values(67890, 101, 100, 205, 'Phase 1 of the other project');
查询:
select ProjectId, avg(TargetRate)Average_TargetRate FROM Projects
group by ProjectId
输出:
ProjectId | Average_TargetRate |
---|---|
12345 | 148 |
67890 | 202 |
db<>fiddle here
您可以在选择 AVG(TargetRate)
的同时 GROUP BY
ProjectID
字段。
SELECT
ProjectId,
AVG(TargetRate)AverageTargetRate,
FROM Projects
GROUP BY ProjectId;