面对不同行和不同列中的数字
Posted
技术标签:
【中文标题】面对不同行和不同列中的数字【英文标题】:Confronting Numbers in Different Rows and Different Columns 【发布时间】:2022-01-05 10:24:30 【问题描述】:总之,我想分析一下乐透结果中哪些数字出现的频率更高。
表格:列表
列:number_1
,number_2
,number_3
,number_4
,number_5
,number_6
数据;
number_1 | number_2 | number_3 | number_4 | number_5 | number_6 |
---|---|---|---|---|---|
1 | 2 | 3 | 30 | 40 | 50 |
14 | 20 | 30 | 40 | 51 | 52 |
12 | 57 | 28 | 36 | 55 | 65 |
13 | 28 | 35 | 36 | 57 | 55 |
我应该通过查询得到的结果
28,36,55,57 -> 目标:2
30,40 -> 目标:2
【问题讨论】:
【参考方案1】:就我而言,您的目标似乎不止一次确定了撤回的数字。然后,您可以通过使用UNION ALL
运算符构造一个动态SQL 查询数据库字典表(即information_schema.columns
),包括一个反透视,以便将所有单独的列组合成唯一的列,然后使用HAVING
子句应用聚合,例如作为
SET @sql = NULL;
SELECT GROUP_CONCAT(
CONCAT(
'SELECT ',column_name,' AS number FROM ',table_name )
SEPARATOR ' UNION ALL ')
INTO @sql
FROM information_schema.columns c
WHERE table_name = 'list'
ORDER BY ordinal_position;
SET @sql = CONCAT('SELECT number, COUNT(*) AS target
FROM (',@sql,') AS nr
GROUP BY number
HAVING COUNT(*)>1');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
Demo
【讨论】:
以上是关于面对不同行和不同列中的数字的主要内容,如果未能解决你的问题,请参考以下文章