MySQL - 获取两个字段中出现的一对值

标签 mysql sql group-by

我有一张 table ,上面有重复的 X 和 Y 对:

------------------------
   ID   |   X   |   Y   
------------------------
   1       10      20
   2       20      10
   3       10      20
   4       30      20
   5       20      10
   6       20      10

我想像这样计算相同 (X,Y) 对的频率:

--------------------------
  X   |   Y   |   COUNT   
--------------------------
  20     10         3
  10     20         2
  30     20         1

这是我尝试做的:

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

但结果不是我所期望的:对于所有夫妇,返回的 FREQUENCY 都是 1。

我哪里错了?

最佳答案

不要使用此 COUNT(DISTINCT X, Y) 因为 DISTINCT 会删除所有相同的记录,并且您将获得相同 X,Y 的单个值,这就是为什么您得到 1

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

现场演示

http://sqlfiddle.com/#!9/beeff/2

关于MySQL - 获取两个字段中出现的一对值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49425152/

相关文章:

php - 在 PHP 中按日期对对象数组进行分组

php - 使用 Zend_Db_Select 选择 '0' AS 变量 ...

sql - Django查询大量关系

具有两个条件的python groupby并计算平均值

php - 在重新加载/重定向期间保持变量结果

MySQL 选择包含前导或尾随空格的字段

java - 是每个数据库引擎 (jdbc) 的 Sql 语法

java - 有没有办法将本地数据库添加到 netbeans java 项目包中?

mysql - 如何使 mysql group by 子句中缺失日期的计数为零

mysql - MySQL : Self join 中的分组最大值列