#sql
#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)
Комментарии:
1. Прежде всего, какую СУБД вы используете?
Ответ №1:
SELECT 1 AS DAY FROM DAY1 WHERE C=1 UNION
SELECT 2 AS DAY FROM DAY2 WHERE C=1 UNION
...
SELECT 9 AS DAY FROM DAY9 WHERE C=1 UNION
SELECT 10 AS DAY FROM DAY10 WHERE C=1
А затем выполните COUNT(*) ГРУППИРУЙТЕ ПО ДНЯМ.
Ответ №2:
Я новичок, но буду стараться изо всех сил:
Предполагая, что у вас есть 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