You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL:统计表中X、Y字段值对的出现频次问题

解决(X,Y)值对频次统计的SQL问题

嘿,我来帮你排查这个问题~首先咱们先明确你的需求:统计表中每个唯一(X,Y)组合的出现次数,对吧?

先看你的原始数据:

IDXY
11020
22010
31020
43020
52010
62010

你写的SQL问题出在COUNT(DISTINCT X, Y)这里:

SELECT X, Y, COUNT(DISTINCT X, Y) AS FREQUENCY FROM `ordini` GROUP BY X, Y ORDER BY `FREQUENCY` DESC

为什么不对呢?因为当你用GROUP BY X,Y的时候,每个分组里的所有行都是完全相同的(X,Y)组合,这时候COUNT(DISTINCT X,Y)会对每个分组里的X,Y去重,结果自然是1——每个分组里只有一种(X,Y)组合呀!这显然不是你要的频次。

正确的SQL写法

你只需要把COUNT(DISTINCT X, Y)改成COUNT(*)(或者COUNT(1)、COUNT(ID)都可以,因为ID是唯一的),这样就能统计每个分组里的行数,也就是该(X,Y)组合的出现次数:

SELECT X, Y, COUNT(*) AS FREQUENCY 
FROM `ordini` 
GROUP BY X, Y 
ORDER BY `FREQUENCY` DESC

执行这个语句后,就能得到你期望的结果:

XYFREQUENCY
20103
10202
30201

简单来说,GROUP BY X,Y已经帮你把相同的(X,Y)组合归为一组了,你只需要统计每组里有多少行就行,不需要再对X,Y去重统计啦~

内容的提问来源于stack exchange,提问作者kiks73

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:16:47