Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql计数数字显示数_Mysql_Sql - Fatal编程技术网

mysql计数数字显示数

mysql计数数字显示数,mysql,sql,Mysql,Sql,我有一列包含0-9之间的单个数字。 我需要知道每个数字出现多少次。 i、 e 0-4次,1-5次等等 我有6列要计算,所以我不想执行9*6查询,如果可能的话,用更少的时间 编辑: 我需要知道第1列出现了多少次,第2列出现了多少次,第3列出现了多少次。 这适用于所有数字 谢谢, Danny假设你有这组记录 ╔══════╦══════╦══════╦══════╦══════╦══════╗ ║ COL1 ║ COL2 ║ COL3 ║ COL4 ║ COL5 ║ COL6 ║ ╠══════╬═

我有一列包含0-9之间的单个数字。 我需要知道每个数字出现多少次。 i、 e 0-4次,1-5次等等

我有6列要计算,所以我不想执行9*6查询,如果可能的话,用更少的时间

编辑:

我需要知道第1列出现了多少次,第2列出现了多少次,第3列出现了多少次。 这适用于所有数字

谢谢,
Danny

假设你有这组记录

╔══════╦══════╦══════╦══════╦══════╦══════╗
║ COL1 ║ COL2 ║ COL3 ║ COL4 ║ COL5 ║ COL6 ║
╠══════╬══════╬══════╬══════╬══════╬══════╣
║    1 ║    6 ║    3 ║    1 ║    2 ║    2 ║
║    2 ║    7 ║    3 ║    8 ║    3 ║    9 ║
║    3 ║    8 ║    3 ║    8 ║    8 ║    9 ║
║    4 ║    9 ║    2 ║    7 ║    1 ║    1 ║
║    5 ║    0 ║    1 ║    3 ║    1 ║    6 ║
╚══════╩══════╩══════╩══════╩══════╩══════╝
质疑

输出

╔═════╦══════╦══════╦══════╦══════╦══════╦══════╗
║ VAL ║ COL1 ║ COL2 ║ COL3 ║ COL4 ║ COL5 ║ COL6 ║
╠═════╬══════╬══════╬══════╬══════╬══════╬══════╣
║   0 ║    0 ║    1 ║    0 ║    0 ║    0 ║    0 ║
║   1 ║    1 ║    0 ║    1 ║    1 ║    2 ║    1 ║
║   2 ║    1 ║    0 ║    1 ║    0 ║    1 ║    1 ║
║   3 ║    1 ║    0 ║    3 ║    1 ║    1 ║    0 ║
║   4 ║    1 ║    0 ║    0 ║    0 ║    0 ║    0 ║
║   5 ║    1 ║    0 ║    0 ║    0 ║    0 ║    0 ║
║   6 ║    0 ║    1 ║    0 ║    0 ║    0 ║    1 ║
║   7 ║    0 ║    1 ║    0 ║    1 ║    0 ║    0 ║
║   8 ║    0 ║    1 ║    0 ║    2 ║    1 ║    0 ║
║   9 ║    0 ║    1 ║    0 ║    0 ║    0 ║    2 ║
╚═════╩══════╩══════╩══════╩══════╩══════╩══════╝

你可能应该考虑规范你的数据,这样你就可以将你的值存储在一个单独的表中:FK标识你现有的记录,关注列(1-6)和包含在其中的值。example@eggyal你为什么删除你的答案?(即自然连接的危险:)工作!我无法理解你是如何做到这么快的……但它正在工作:)你能解释一下这句话吗:“MAX(当colName='num1'然后TotalCount ELSE 0 END)num1,”Mysql不像其他任何支持它的RDBMS那样有一个
PIVOT()
函数。因此,在本例中,它基本上需要使用聚合函数,例如
MAX()
CASE
测试子查询中生成的列的值。当结果为true时,列上给出的值是子查询中的聚合结果,否则
0
。因此,为了避免重复使用
val
的值,我们使用
MAX()
来聚合记录。
SELECT  a.val, 
        MAX(CASE WHEN colName = 'col1' THEN TotalCount ELSE 0 END) col1,
        MAX(CASE WHEN colName = 'col2' THEN TotalCount ELSE 0 END) col2,
        MAX(CASE WHEN colName = 'col3' THEN TotalCount ELSE 0 END) col3,
        MAX(CASE WHEN colName = 'col4' THEN TotalCount ELSE 0 END) col4,
        MAX(CASE WHEN colName = 'col5' THEN TotalCount ELSE 0 END) col5,
        MAX(CASE WHEN colName = 'col6' THEN TotalCount ELSE 0 END) col6
FROM
        (
           SELECT 0 val UNION ALL
           SELECT 1 UNION ALL
           SELECT 2 UNION ALL
           SELECT 3 UNION ALL
           SELECT 4 UNION ALL
           SELECT 5 UNION ALL
           SELECT 6 UNION ALL
           SELECT 7 UNION ALL
           SELECT 8 UNION ALL
           SELECT 9
        ) a
        LEFT JOIN
        (
            SELECT col1 val, COUNT(*) TotalCount, 'col1' colname 
            FROM tableName 
            GROUP BY col1
            UNION ALL
            SELECT col2 val, COUNT(*), 'col2' colname 
            FROM tableName 
            GROUP BY col2
            UNION ALL
            SELECT col3 val, COUNT(*), 'col3' colname 
            FROM tableName 
            GROUP BY col3
            UNION ALL
            SELECT col4 val, COUNT(*), 'col4' colname 
            FROM tableName 
            GROUP BY col4
            UNION ALL
            SELECT col5 val, COUNT(*), 'col5' colname 
            FROM tableName 
            GROUP BY col5
            UNION ALL
            SELECT col6 val, COUNT(*), 'col6' colname 
            FROM tableName 
            GROUP BY col6
        ) b ON a.val = b.val
GROUP By a.val
╔═════╦══════╦══════╦══════╦══════╦══════╦══════╗
║ VAL ║ COL1 ║ COL2 ║ COL3 ║ COL4 ║ COL5 ║ COL6 ║
╠═════╬══════╬══════╬══════╬══════╬══════╬══════╣
║   0 ║    0 ║    1 ║    0 ║    0 ║    0 ║    0 ║
║   1 ║    1 ║    0 ║    1 ║    1 ║    2 ║    1 ║
║   2 ║    1 ║    0 ║    1 ║    0 ║    1 ║    1 ║
║   3 ║    1 ║    0 ║    3 ║    1 ║    1 ║    0 ║
║   4 ║    1 ║    0 ║    0 ║    0 ║    0 ║    0 ║
║   5 ║    1 ║    0 ║    0 ║    0 ║    0 ║    0 ║
║   6 ║    0 ║    1 ║    0 ║    0 ║    0 ║    1 ║
║   7 ║    0 ║    1 ║    0 ║    1 ║    0 ║    0 ║
║   8 ║    0 ║    1 ║    0 ║    2 ║    1 ║    0 ║
║   9 ║    0 ║    1 ║    0 ║    0 ║    0 ║    2 ║
╚═════╩══════╩══════╩══════╩══════╩══════╩══════╝