mysql 表组是什么_mysql-从具有组的多个表中计数

我有两张桌子.第一个表注册录取.

第二个有出口,如下所示:

Table 1: Admissions

+----------+---------------------+---------+

| entry_id | join_date | name |

+----------+---------------------+---------+

| 26 | 2017-01-01 00:00:00 | James |

| 29 | 2017-01-01 00:00:00 | Jan |

| 27 | 2017-01-01 00:00:00 | Chris |

| 28 | 2017-01-01 00:00:00 | Mary |

| 22 | 2017-01-02 00:00:00 | Anna |

| 21 | 2017-01-02 00:00:00 | Andy |

| 24 | 2017-01-02 00:00:00 | Bob |

| 20 | 2017-01-04 00:00:00 | Alice |

| 23 | 2017-01-04 00:00:00 | Chris |

| 25 | 2017-01-04 00:00:00 | Happy |

+----------+---------------------+---------+

Table 2: Exits

+----------+---------------------+----------+

| entry_id | exit_date | name |

+----------+---------------------+----------+

| 322 | 2017-01-01 00:00:00 | Kay |

| 344 | 2017-01-01 00:00:00 | Agnes |

| 920 | 2017-01-02 00:00:00 | Andre |

| 728 | 2017-01-02 00:00:00 | Mark |

| 583 | 2017-01-03 00:00:00 | Alsta |

| 726 | 2017-01-03 00:00:00 | Bull |

| 816 | 2017-01-03 00:00:00 | Jane |

| 274 | 2017-01-04 00:00:00 | Jack |

| 723 | 2017-01-04 00:00:00 | Anna |

| 716 | 2017-01-04 00:00:00 | Bill |

+----------+---------------------+----------+

我正在寻找一种解决方案,以了解按日期分组的入场人数,退出人数和余额.

我正在寻找>

+---------------------+--------+--------+-----------+

| date | joins | exist | net |

+---------------------+--------+--------+-----------+

| 2017-01-01 00:00:00 | 4 | 2 | 2 |

| 2017-01-02 00:00:00 | 3 | 2 | 1 |

| 2017-01-03 00:00:00 | 0 | 3 | -3 |

| 2017-01-04 00:00:00 | 3 | 3 | 0 |

+---------------------+--------+--------+-----------+

注意:可能会有几天发生录取,但是没有注册退出,反之亦然.

解决方法:

我没有找到答案.这是我一个朋友的回答,下面是MySQL版本:

select aa.date, IFNULL(aa.joins, 0) joins, IFNULL(bb.exits,0) exits, (IFNULL(aa.joins,0) - IFNULL(bb.exits,0)) net

from

(

select join_date date, count(name) joins

from Admissions

group by join_date

) aa

left join

(

select exit_date date, count(name) exits

from Exits

group by exit_date

) bb on aa.date = bb.date

UNION

select bb.date, IFNULL(aa.joins, 0) joins, IFNULL(bb.exits,0) exits, (IFNULL(aa.joins,0) - IFNULL(bb.exits,0)) net

from

(

select join_date date, count(name) joins

from Admissions

group by join_date

) aa

right join

(

select exit_date date, count(name) exits

from Exits

group by exit_date

) bb on aa.date = bb.date order by date;

标签:sql,mysql

来源: https://codeday.me/bug/20191108/2007512.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值