如何查询两个 tables 按日期分组并计算每个 table 的日期注册表
How to query two tables grouping by date and counting date registries for each table
我使用的是 Firebird 2.5,我有两个 table:
|----------TABLE_1---------| |----------TABLE_2---------|
| DATE_1 | SOME_INFO_1 | | DATE_2 | SOME_INFO_2 |
| 2015-05-01 | Brazil | | 2015-04-10 | Bread |
| 2015-06-23 | Paraguai | | 2015-05-01 | Air |
| 2015-05-01 | Chile | | 2015-05-01 | Water |
| 2015-05-01 | Argentina |
我想按日期对 table 进行分组,这样我就可以计算每个 table 中每个日期有多少注册表。这是预期的结果:
|----------------RESULT_TABLE----------------|
| DATE | COUNT_TABLE_1 | COUNT_TABLE 2 |
| 2014-04-10 | 0 | 1 |
| 2015-05-01 | 3 | 2 |
| 2015-06-23 | 1 | 0 |
我正在尝试这个:
SELECT
a.date_1,
COUNT(a.date_1) AS count_table_1,
COUNT(b.date_2) AS count_table_2
FROM
table_1 a
LEFT OUTER JOIN
table_2 b ON b.date_2 = a.date_1
GROUP BY
a.date_1, b.date_2
ORDER BY
a.date_1 ASC, b.date_2 ASC
我得到的结果是:
|----------------RESULT_TABLE----------------|
| DATE | COUNT_TABLE_1 | COUNT_TABLE 2 |
| 2014-04-10 | 0 | 1 |
| 2015-05-01 | 6 | 6 |
| 2015-06-23 | 1 | 0 |
感觉我的SQL乱七八糟,但我解决不了
首先,汇总每个 table 中的结果,然后 join
使用 date
列。
select t1.date_1 as dt, isnull(t1_count,0), isnull(t2_count,0)
from
(SELECT date_1, count(*) as t1_count from table_1 group by date_1) t1
full outer join
(SELECT date_2, count(*) as t2_count from table_2 group by date_2) t2
on t1.date_1 = t2.date_2
我使用的是 Firebird 2.5,我有两个 table:
|----------TABLE_1---------| |----------TABLE_2---------|
| DATE_1 | SOME_INFO_1 | | DATE_2 | SOME_INFO_2 |
| 2015-05-01 | Brazil | | 2015-04-10 | Bread |
| 2015-06-23 | Paraguai | | 2015-05-01 | Air |
| 2015-05-01 | Chile | | 2015-05-01 | Water |
| 2015-05-01 | Argentina |
我想按日期对 table 进行分组,这样我就可以计算每个 table 中每个日期有多少注册表。这是预期的结果:
|----------------RESULT_TABLE----------------|
| DATE | COUNT_TABLE_1 | COUNT_TABLE 2 |
| 2014-04-10 | 0 | 1 |
| 2015-05-01 | 3 | 2 |
| 2015-06-23 | 1 | 0 |
我正在尝试这个:
SELECT
a.date_1,
COUNT(a.date_1) AS count_table_1,
COUNT(b.date_2) AS count_table_2
FROM
table_1 a
LEFT OUTER JOIN
table_2 b ON b.date_2 = a.date_1
GROUP BY
a.date_1, b.date_2
ORDER BY
a.date_1 ASC, b.date_2 ASC
我得到的结果是:
|----------------RESULT_TABLE----------------|
| DATE | COUNT_TABLE_1 | COUNT_TABLE 2 |
| 2014-04-10 | 0 | 1 |
| 2015-05-01 | 6 | 6 |
| 2015-06-23 | 1 | 0 |
感觉我的SQL乱七八糟,但我解决不了
首先,汇总每个 table 中的结果,然后 join
使用 date
列。
select t1.date_1 as dt, isnull(t1_count,0), isnull(t2_count,0)
from
(SELECT date_1, count(*) as t1_count from table_1 group by date_1) t1
full outer join
(SELECT date_2, count(*) as t2_count from table_2 group by date_2) t2
on t1.date_1 = t2.date_2