gpt4 book ai didi

java - 一个表中多列的每条记录(整数)的 SQL 计数出现次数

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

我正在研究一种算法,使用 SQL 和 JAVA,涉及大数据集。在 SQL 中,我有一个包含所有数据的表,我想在将其加载到 JAVA 之前使用尽可能多的 SQL 查询。

我生成随机数据集(在 Java 中),仅由 1 到 40001 之间的整数组成,然后将它们插入 MySQL 表中。行可以有不同的长度,最多 30 个项目/记录(包括 ID)。所以通常列的数量是 30(所以 COL1,COL2,COL3,......COL30)但是这个数量在某些时候也是随机的

我想做的是计算表/数据集中每个不同项目的出现次数,并将它们与它们的计数一起放入新表中。然而,这很棘手,因为我想在整个表格中计算它,而不仅仅是一列。我该怎么做?

要指定:

以这张 table 为例(与我平时用的 table 相比,这张 table 很小):

ID | COL1 | COL2 | COL3 | COL4 | COL5 |
---------------------------------------
1 | 8 | 35 | 42 | 12 | 27 |
2 | 22 | 42 | 35 | 8 | NULL |
3 | 18 | 22 | 8 | NULL | NULL |
4 | 42 | 12 | 27 | 35 | 8 |
5 | 18 | 27 | 12 | 22 | NULL |

我想从这个表中提取的是:

Item | Count
-------------
8 | 3
35 | 3
40 | 1
12 | 3
27 | 3
22 | 3
42 | 2
43 | 1
18 | 2

如果有帮助的话,一个项目不能多次出现在同一行也是如此。

谁能帮帮我?或者它是否可以简单地不在 SQL 中完成?在性能方面,用 JAVA 执行此操作会更好吗?

提前致谢!

最佳答案

您可以通过反透视数据然后聚合来做到这一点:

select col, count(*)
from (select col1 as col from t union all
select col2 from t union all
. . .
select col30 from t
) t
group by col;

如果您没有一组已知的列,那么您将需要使用动态 SQL。

关于java - 一个表中多列的每条记录(整数)的 SQL 计数出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47544260/

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