假设我在表X中有数据:
id assign team
----------------------
1 hunkim A
1 ygg A
2 hun B
2 gw B
2 david B
3 haha A
我想知道每个id有多少分配。我可以使用:
从中选择id,count(distinct assign) X组由id 按计数排序(不同的分配)desc;
它会给我一些东西:
1 2
2 3
3 1
我的问题是如何获得所有分配计数的平均值?
此外,现在我想了解每个团队的薪酬。所以我希望得到类似的东西:
team assign_avg
-------------------
A 1.5
B 3
提前致谢!
答案 0 :(得分:1)
SELECT
AVG(CAST(assign_count AS DECIMAL(10, 4)))
FROM
(SELECT
id,
COUNT(DISTINCT assign) AS assign_count
FROM
X
GROUP BY
id) Assign_Counts
SELECT
team,
AVG(CAST(assign_count AS DECIMAL(10, 4)))
FROM
(SELECT
id,
team,
COUNT(DISTINCT assign) AS assign_count
FROM
X
GROUP BY
id,
team) Assign_Counts
GROUP BY
Team
答案 1 :(得分:1)
您可以使用聚合函数COUNT和AVG在一个查询中完成所需的操作:
SELECT t.id,
COUNT(*) AS num_instances,
AVG(t.id) AS assign_avg
FROM TABLE t
GROUP BY t.id
不需要对它们执行聚合函数的列需要在GROUP BY子句中定义。