首页 > 解决方案 > 如何在 SQL 中跨多个表聚合列值的计数?

问题描述

我有多个表(比如说 10 个表),如下所示:

********  ********        *********  
* day1 *  * day2 *  ....  * day10 *  
********  ********        *********  
A B C ..  A B C ..        A B C ...  
1 4 9 ..  7 6 8 ..        9 6 2 ...  
7 2 1 ..  0 2 1 ..        0 5 1 ...  
3 3 1 ..  0 9 7 ..        1 4 1 ...  
7 8 0 ..  1 6 5 ..        2 6 1 ...  
********  ********        *********  

我想计算每个表中列 C = 1 的次数并创建一个新表,如下所示:

**********
* output *
**********
day   num  
 1     2  
 2     1  
 .     .  
 .     .  
10     3
**********

像这样的东西:

SELECT <n> AS day, COUNT(*) AS num
FROM day<n>
WHERE C = 1 AND <n> IN (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

最好的方法是什么?(我是 SQL 新手)

标签: sql

解决方案


我是新手,但会尽力而为:

假设你有day1~day3,只有三个表:

SELECT
    1 AS day,
    COUNT(day1.C) AS num
FROM
    day1
WHERE day1.C = 1
UNION ALL
SELECT
    2 AS day,
    COUNT(day2.C) AS num
FROM
    day2
WHERE day2.C = 1
UNION ALL
SELECT
    3 AS day,
    COUNT(day3.C) AS num
FROM
    day3
WHERE day3.C = 1

这会给你:

    day    num
1    1      2
2    2      1
3    3      3

推荐阅读