mysql - 根据mysql中的日期时间从两个不同的表中获取计数

标签 mysql

我有两个表: 本地交通 外国运输 两个表都有 id,entry_time

表一:

id---entry_time
==============================
1--2017-07-17 12:10:39
2--2017-04-17 12:10:39
3--2016-07-17 12:10:39
4--2016-05-17 12:10:39
5--2015-07-17 12:10:39
6--2015-07-17 12:10:39
7--2014-07-17 12:10:39
8--2014-06-17 12:10:39

表b:

id---entry_time
==============================
1--2017-07-17 12:10:39
2--2017-04-17 12:10:39
3--2016-07-17 12:10:39
4--2016-05-17 12:10:39
5--2015-07-17 12:10:39
6--2015-07-17 12:10:39
7--2014-07-17 12:10:39
8--2014-06-17 12:10:39

我的财政年度将从 7 月 1 日开始到 6 月 30 日

我想要什么:

-----2014-15--------2015-16-----------2016-17
foreign--local---foreign--local------foreign--local
===============================================
3---5-------------5--6----------------4----10

我想从两个表中的输入日期获取财政年度计数。我怎样才能在 mysql 中得到这个?

最佳答案

你可以在这里使用条件聚合:

SELECT
    COUNT(CASE WHEN type = 0 AND entry_time >= '2014-07-01' AND
                    entry_time < '2015-07-01' THEN 1 END) AS foreign_2014,
    COUNT(CASE WHEN type = 1 AND entry_time >= '2014-07-01' AND
                    entry_time < '2015-07-01' THEN 1 END) AS local_2014,
    COUNT(CASE WHEN type = 0 AND entry_time >= '2015-07-01' AND
                    entry_time < '2016-07-01' THEN 1 END) AS foreign_2015,
    COUNT(CASE WHEN type = 1 AND entry_time >= '2015-07-01' AND
                    entry_time < '2016-07-01' THEN 1 END) AS local_2015
    -- add more counts for other fiscal years here
FROM
(
    SELECT id, entry_time, 0 AS type    -- 0 is for foreign
    FROM tableA
    UNION ALL
    SELECT id, entry_time, 1            -- 1 is for local
    FROM tableB
) t;

这个答案使用联合技巧将本地数据和外部数据合并到一个表中。在此过程中,我们分配一个状态,0 代表外国,1 代表本地。然后,我们使用 CASE 表达式来计算每个年份和状态的记录。

请注意,我在这里假设 A 表和 B 表分别包含外部和本地数据。如果我把它倒过来,则在我的查询中切换状态。

关于mysql - 根据mysql中的日期时间从两个不同的表中获取计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47976430/

相关文章:

mysql - 解析 PubMed XML 以提交到 mySQL 数据库 (XML::Twig)

mysql - 从另一个表获取 2 个不同表的 SUM

mysql - 多个 JOIN 太复杂

mysql - 获取与 2 个不同表的一对多关系的计数

MySql - 缓慢发送数据阶段

php - SHA 函数问题

mysql - Symfony2中如何允许重复输入,SQLSTATE[23000]?

mysql - 选择之间的行,其中列的类型为varchar

java - 在docker-compose中连接tomcat和mysql

mysql - 同一张表上的多个联接