【发布时间】:2018-10-04 16:54:40
【问题描述】:
我有这个 mysql 查询:
SELECT round(AVG(DISTINCT points),0) as PM
FROM data
WHERE points != 0
在数据数据库中,我有几个用户属于不同的地区。每个用户可以在任意多个区,但每个区的积分是相同的,所以,我们可以:
User , District , Points
1 , 1 , 20
1 , 3 , 20
1 , 21 , 20
2 , 3 , 10
2 , 7 , 10
我想提取上表的平均分,但只计算每个用户一次,不管他在多少个区。
通过我的查询,我只得到了不同点的那些,但是,例如,如果我有一个 10 点的用户 3,查询将返回:15 (20+10 = 30/2 = 15),而不是正确值:13 (20+10+10 = 40 / 3 = 13,3333)。
有什么帮助吗?
非常感谢!
【问题讨论】:
-
嗨草莓...你错过了什么?你需要什么来帮助我?让我知道,我可以提供。我认为提供了所需的一切。谢谢。
-
您可能应该考虑重构您的表结构。如果每个用户在他们所在的每个区都有完全相同的积分,那么
(user, points)和(user, district)应该是单独的表。