首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Mysql计算出现次数

Mysql计算出现次数
EN

Stack Overflow用户
提问于 2013-05-17 05:53:10
回答 3查看 194关注 0票数 0

因此,假设我们有以下数据表:

代码语言:javascript
运行
复制
A   |   B
_________
1   |   2
3   |   4
5   |   6
6   |   5

如果我想计算相同数字相撞或在同一行的次数,该怎么办?因此,在上面的示例中,1-2和3-4将返回计数1,因为它们只在同一行上出现一次,但是5-6和6-5将返回值2。

一个更真实的例子:假设这些数字是运动队的id,A和B列决定了主队和客队。Ao 5队和6队共进行了2场比赛,先是5队作为主机,然后是6队作为主机。

那么我如何在mysql中计算这些值呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-05-17 08:20:13

代码语言:javascript
运行
复制
DROP TABLE IF EXISTS fixtures;
CREATE TABLE fixtures
(fixture_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
,home INT NOT NULL
,away INT NOT NULL
);

INSERT INTO fixtures (home,away) VALUES (1,2),(3,4),(5,6),(6,5);

SELECT * FROM fixtures;
+------------+------+------+
| fixture_id | home | away |
+------------+------+------+
|          1 |    1 |    2 |
|          2 |    3 |    4 |
|          3 |    5 |    6 |
|          4 |    6 |    5 |
+------------+------+------+

SELECT LEAST(home,away) a,GREATEST(home,away) b, COUNT(*) ttl FROM fixtures GROUP BY a,b;
+---+---+-----+
| a | b | ttl |
+---+---+-----+
| 1 | 2 |   1 |
| 3 | 4 |   1 |
| 5 | 6 |   2 |
+---+---+-----+
票数 1
EN

Stack Overflow用户

发布于 2013-05-17 06:23:32

由于a-b与b-a相同,因此需要对结果进行规范化:

代码语言:javascript
运行
复制
SELECT LEAST(a,b) AS x, GREATEST(a,b) AS y ...

现在可以计算出现的次数了:

代码语言:javascript
运行
复制
SELECT LEAST(a,b) AS x, GREATEST(a,b) AS y, count(*) as c FROM tablename GROUP BY x,y

问候

票数 0
EN

Stack Overflow用户

发布于 2013-05-17 07:26:06

代码语言:javascript
运行
复制
SELECT
CASE WHEN A < B THEN A ELSE B END AS aa,
CASE WHEN B > A THEN B ELSE A END AS bb,
COUNT(*)
FROM
Table1 t1
GROUP BY aa, bb

sqlfiddle中观看实况。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16598114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档