MySQL: Как найти количество записей из одной таблицы, где дата позже, чем дата из другой таблицы - PullRequest
0 голосов
/ 04 мая 2020

Есть 2 таблицы MariaDB:

table1

|------+----------------------+
| phone | calldate            |
|-------+---------------------+
| 123   | 2020-01-01 17:01:00 |
| 456   | 2020-01-01 17:01:00 |
| 789   | 2020-01-01 17:01:00 |
|------+---------------------+|

table2

|------+---------------------+
| phone| calldate            |
|------+---------------------+
| 123  | 2020-01-01 16:00:00 |
| 123  | 2020-01-01 17:00:00 |
| 456  | 2020-01-01 17:00:00 |
| 123  | 2020-01-01 18:00:00 |
| 456  | 2020-01-01 18:00:00 |
| 789  | 2020-01-01 18:00:00 |
|------+---------------------+

Ожидаемый результат:

|-------+------+
| phone | count|
|-------+------+
| 123   | 2    |
| 456   | 1    |
|-------+------+

Как найти количество записей из table2, где calldate раньше, чем calldate из группы table1 по телефону?

Ответы [ 3 ]

1 голос
/ 04 мая 2020

Как найти количество записей из таблицы 2, где calldate позже, чем calldate из группы table1 по телефону?

Это звучит как join и агрегация:

select t2.phone, count(*)
from table2 t2 join
     table1 t1
     on t2.phone = t1.phone and t2.calldate > t1.calldate
group by t2.phone;
0 голосов
/ 04 мая 2020

Вы также можете попробовать с предложением where, если это не работает:

select count(table2.phone) from table2 t2 
full outer join table1 t1 on t2.phone=t1.phone
where t2.calldate >t1.calldate
group by t2.phone
0 голосов
/ 04 мая 2020

С EXISTS:

select t2.phone, count(*) count
from table2 t2 
where exists (
  select 1 from table1 t1
  where t1.phone = t2.phone and t1.calldate > t2.calldate
)  
group by t2.phone

См. Демоверсию . Результаты:

| phone | count    |
| ----- | -------- |
| 123   | 2        |
| 456   | 1        |
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...