gpt4 book ai didi

mysql - 在 MySql/GROUP BY 语法中创建和弦图矩阵

转载 作者:行者123 更新时间:2023-11-29 04:49:40 26 4
gpt4 key购买 nike

我正在用MYSQL做一些数据分析,希望可以实现下面的功能。

我有一个记录用户博客主题的表格,如下所示。我总共有 25 个主题,我想对此进行足够的抽象,以便我们以后可以添加主题,而不必重做查询(如果可能的话):

-----------------------
| user_id | topic |
-----------------------
| 01 | art |
| 01 | cooking |
| 02 | art |
| 03 | outdoors |
| 03 | art |
| 03 | cooking |
-----------------------

为了根据这些数据创建和弦图 (http://bl.ocks.org/4062006),我需要分析任意两个主题之间的关系,方法是按两个主题对行进行分组,或者创建一个矩阵:

-----------------------------------------
| topic_combo | user_cnt |
-----------------------------------------
| art + cooking | 2 |
| art + outdoors | 1 |
| cooking + outdoors | 1 |
-----------------------------------------

或者,甚至更好...

---------------------------------------------
| | art | cooking | outdoors |
---------------------------------------------
| art | 3 | 2 | 1 |
| cooking | 2 | 2 | 1 |
| outdoors | 1 | 1 | 1 |
---------------------------------------------

在 MYSQL 中这些都可能吗?如果是这样,最简单的方法是什么?

最佳答案

好吧,我不知道这是否是最好的方法,但至少在您得到更好的答案之前它是一种方法。使用 Guvante 提到的 JOIN 和 GROUP BY。

SELECT a.topic AS at, b.topic AS bt, COUNT(*) AS c FROM a JOIN a AS b ON a.user_id=b.user_id GROUP BY a.topic, b.topic;

这将导致如下输出:

at          bt          c
-----------------------------
art art 3
art cooking 2
art outdoors 1
cooking art 2
cooking cooking 2
cooking outdoors 1
outdoors art 1
outdoors cooking 1
outdoors outdoors 1

您可以将其转换为矩阵,例如通过 PHP

while($data = mysql_fetch_object($sql)) {
$matrix[$data->at][$data->bt] = $data->c;
}

编辑:在 friend 的提示下删除了评论中提到的重复项。

关于mysql - 在 MySql/GROUP BY 语法中创建和弦图矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13386249/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com