关闭。这个问题需要细节或清晰。它目前不接受答案。
**想改进这个问题吗?**通过编辑这个帖子来添加细节并澄清问题。
两年前关门了。
改进这个问题
我有一个mysql查询:
SELECT round(AVG(DISTINCT points),0) as PM
FROM data
WHERE points != 0
在datadb中,我有几个属于不同地区的用户。每个用户可以在任意多个地区,但每个地区的积分都是相同的,因此,我们可以:
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=133333)。
需要帮忙吗?
谢谢!
2条答案
按热度按时间ikfrs5lh1#
你试过了吗
GROUP BY
在你的询问结束时?sqlfiddle的在线示例演示
生成架构。。。
插入一些示例数据。。。
然后用分组方式选择。。。
结果。。。
fykwrbwg2#
首先,使用
group by
.现在,使用派生表,计算平均值。你不需要使用
Distinct
现在。try(假设用户由列表示)
user_id
-如果不同,请更改):