面对不同行和不同列中的数字

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

【讨论】:

以上是关于面对不同行和不同列中的数字的主要内容,如果未能解决你的问题,请参考以下文章

在一个表中的不同行和不同列中查找相同的值SQL

解析文本文件的不同行的有效方法

比较一个表中数组不同行的两个值Angular

计算不同行和不同列的持续时间?

如何比较来自不同列和不同行但同一张表的值?

oracle查询将不同的列填充到一列中