Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как составить запрос с группировкой и выборкой из предыдущих периодов? / 4 сообщений из 4, страница 1 из 1
13.06.2017, 22:43
    #39471191
kormot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как составить запрос с группировкой и выборкой из предыдущих периодов?
Добрый день!

Извините за корявый заголовок, ниже поясню конкретней что мне надо.

Есть допустим таблица с звонками:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
id    | day   | phoneID 
------------------------
1     | 01    | 1
2     | 01    | 2
3     | 01    | 6
4     | 01    | 2
5     | 02    | 1
6     | 02    | 6
7     | 02    | 7
8     | 02    | 1
9     | 03    | 6
10    | 03    | 8
11    | 03    | 1
12    | 03    | 9



В этой таблице значит дни и идентификаторы звонившего. Так вот задача проста:
Выбрать количество "новых" звонков за каждый день. Т.е. количество звонивших, которые не звонили до сего дня.
Итогом должно быть:
Код: sql
1.
2.
3.
01   | 3   /* 1,2,6*/
02   | 1   /*7*/
03   | 2   /*8,9*/



Что-то думал-думал, не придумал.
...
Рейтинг: 0 / 0
13.06.2017, 23:18
    #39471197
kormot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как составить запрос с группировкой и выборкой из предыдущих периодов?
Теоретически нашёл решение с доп. таблицей:
Код: sql
1.
2.
3.
4.
5.
Table A (
 id SERIAL,
addDate BIGINT UNSIGNED,
phoneID UNIQUE
)



И в эту таблицу загонять соответственно данные из исходной таблицы. Соответственно вставлен будет каждый номер только 1 раз, при своём первом появлении. И соответственно затем уже использовать полученную таблицу в качестве данных для получения результата.

Вопрос в том, есть ли решение в один запрос, без доп. таблиц и прочих усложнений?
...
Рейтинг: 0 / 0
14.06.2017, 01:11
    #39471213
javajdbc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как составить запрос с группировкой и выборкой из предыдущих периодов?
kormotТеоретически нашёл решение с доп. таблицей:
Код: sql
1.
2.
3.
4.
5.
Table A (
 id SERIAL,
addDate BIGINT UNSIGNED,
phoneID UNIQUE
)




И в эту таблицу загонять соответственно данные из исходной таблицы. Соответственно вставлен будет каждый номер только 1 раз, при своём первом появлении. И соответственно затем уже использовать полученную таблицу в качестве данных для получения результата.

Вопрос в том, есть ли решение в один запрос, без доп. таблиц и прочих усложнений?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
select 
   count(1) cnt, 
   mday
FROM
(
select 
   PID, 
   MIN(day) mday
from A
group by PID
) z
GROUP BY mday
...
Рейтинг: 0 / 0
14.06.2017, 07:29
    #39471231
kormot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как составить запрос с группировкой и выборкой из предыдущих периодов?
Чёрт возьми! Похоже на хитрый трюк!

Сегодня попробую, спасибо :)
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как составить запрос с группировкой и выборкой из предыдущих периодов? / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]