Форум программистов, компьютерный форум, киберфорум
Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
 Аватар для Vyazan
12 / 12 / 2
Регистрация: 19.03.2012
Сообщений: 175

Группировка по полю с добавлением даты

12.01.2019, 15:13. Показов 2083. Ответов 14
Метки sql (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!
Есть таблица такого вида:
call_id start_time party_callerid dnowner
7778 11.01.2019 499 500
7778 11.01.2019 499 507
7779 12.01.2019 499 500
7780 12.01.2019 9290649872 804

id - просто идентификатор
call_id - id вызова
start_time - дата вызова
party_callerid - кто звонит
dnowner - куда попадает
В запросе необходимо получить дату первого звонка для каждого номера. Выглядеть примерно так должно:
call_id start_time party_callerid dnowner
7778 11.01.2019 499 500
7780 12.01.2019 9290649872 804
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.01.2019, 15:13
Ответы с готовыми решениями:

Группировка по полю
Здравствуйте! У меня есть запрос, который повторяет одно и то же значение поля, по сути он делает правильно. Но можно ли сделать так чтобы...

Создать сложный отчет - выборка по одному полю, группировка по другому
Уважаемые гуру ! Я новичок в Аксессе, так что прошу сильно не пинать. Есть таблица с полями Рейс, дата, работа, категория. ...

Выборка записей из таблицы и группировка по полю
Приветствую. Есть таблица комментариев, в которой нас интересуют поля uid, user_id. Так вот, нужно выбрать из этой таблицы все уникальные...

14
5961 / 4537 / 1094
Регистрация: 29.08.2013
Сообщений: 28,148
Записей в блоге: 3
12.01.2019, 19:14
SQL
1
2
3
SELECT MIN(id), start_time, party
FROM 
GROUP BY start_time, party
это будет минимальный звонок
далее этот запрос джойнишь с основной таблицей и получаешь dnowner
1
 Аватар для Vyazan
12 / 12 / 2
Регистрация: 19.03.2012
Сообщений: 175
12.01.2019, 20:51  [ТС]
Не совсем понимаю, но пробую разобраться. Вашим запросом убираются лишние call_id, но party_callerid остались. И не понял с какой основной таблицей делать JOIN. У меня всего одна таблица и все в ней
0
411 / 365 / 142
Регистрация: 09.04.2011
Сообщений: 1,051
12.01.2019, 21:32
Vyazan, см эту статью
1
 Аватар для Vyazan
12 / 12 / 2
Регистрация: 19.03.2012
Сообщений: 175
12.01.2019, 22:09  [ТС]
Создал запрос по аналогии с первым вариантом:
SQL
1
2
3
SELECT t.call_id, t.party_callerid, t.start_time
FROM myphone_callhistory_v14 t JOIN
(SELECT call_id, MIN(start_time) AS mtime FROM myphone_callhistory_v14 GROP BY call_id) AS t1 ON t.call_id = t1.call_id AND t.start_time = t1.mtime
MSAccess, на котором провожу тесты - пишет ошибка в предложении FROM((
0
411 / 365 / 142
Регистрация: 09.04.2011
Сообщений: 1,051
12.01.2019, 22:39
возможно в MSAccess ключевое слово AS является обязательным
попробуйте
myphone_callhistory_v14 AS t
вместо
myphone_callhistory_v14 t
1
 Аватар для Vyazan
12 / 12 / 2
Регистрация: 19.03.2012
Сообщений: 175
12.01.2019, 23:08  [ТС]
SQL
1
2
3
SELECT t.call_id, t.party_callerid, t.start_time
FROM myphone_callhistory_v14 AS t JOIN
(SELECT call_id, MIN(start_time) AS mtime FROM myphone_callhistory_v14 GROP BY call_id) AS t1 ON t.call_id = t1.call_id AND t.start_time = t1.mtime
Не помогло
0
411 / 365 / 142
Регистрация: 09.04.2011
Сообщений: 1,051
12.01.2019, 23:16
не силен в аксесе
уточняйте в https://www.cyberforum.ru/ms-access/ с точным указанием ошибки
1
 Аватар для Vyazan
12 / 12 / 2
Регистрация: 19.03.2012
Сообщений: 175
12.01.2019, 23:35  [ТС]
Фиг с ним с accessом, в нем я только тестирую, что бы постоянно не подключаться к реальной базе. В postgre - запрос выполнился, но номера дублируются (поле party_callerid), а нужно только party_callerid с датой (start_time) первого звонка и на какой добавочный номер (dnowner) звонивший попал. call_id бывает одинаковым, когда добавочный номер (dnowner), например, не ответил, то звонок переадресовывается на другой добавочный номер.
0
 Аватар для Vyazan
12 / 12 / 2
Регистрация: 19.03.2012
Сообщений: 175
12.01.2019, 23:39  [ТС]
Результат
Миниатюры
Группировка по полю с добавлением даты  
0
411 / 365 / 142
Регистрация: 09.04.2011
Сообщений: 1,051
13.01.2019, 02:00
Цитата Сообщение от Vyazan Посмотреть сообщение
нужно только party_callerid с датой (start_time) первого звонка и на какой добавочный номер (dnowner) звонивший попал.
так и группировать нужно по party_callerid

MySQL
1
2
3
4
SELECT t.dnowner, t.party_callerid, t.start_time
FROM myphone_callhistory_v14 AS t JOIN
(SELECT call_id, MIN(start_time) AS mtime FROM myphone_callhistory_v14 GROUP BY party_callerid) AS t1 
ON t.party_callerid = t1.party_callerid AND t.start_time = t1.mtime
0
 Аватар для Vyazan
12 / 12 / 2
Регистрация: 19.03.2012
Сообщений: 175
13.01.2019, 13:11  [ТС]
Выдает ошибку Ваш запрос: myphone_callhistory_v14.call_id must appear in the GROUP BY clause or be used in an aggregate function.
Добавил поле call_id в группировку
SQL
1
2
3
4
SELECT t.dnowner, t.party_callerid, t.start_time
FROM myphone_callhistory_v14 AS t JOIN
(SELECT call_id, MIN(start_time) AS mtime FROM myphone_callhistory_v14 GROUP BY party_callerid, call_id) AS t1 
ON t.party_callerid = t1.party_callerid AND t.start_time = t1.mtime
Теперь написал, что t1.party_callerid - не знает такую колонку. Добавил ее:
SQL
1
2
3
4
SELECT t.dnowner, t.party_callerid, t.start_time
FROM myphone_callhistory_v14 AS t JOIN
(SELECT call_id, MIN(start_time) AS mtime, party_callerid FROM myphone_callhistory_v14 GROUP BY party_callerid, call_id) AS t1 
ON t.party_callerid = t1.party_callerid AND t.start_time = t1.mtime
запрос отработал, но неправильно. Вообще вся группировка куда то пропала.
P.S.: Я может не правильно объяснил суть... Есть таблица с журналом вызовов (myphone_callhistory_v14), в нее записываются данные кто звонит (party_callerid), куда звонит (dnowner), дата вызова (start_time). Например, за декабрь 2018 года нам на номер N (dnowner) позвонило 354 новых клиентов с номерами, что хранятся в party_callerid. Я пытаюсь получить выборка вида: номер (party_callerid) такой то первый раз позвонил тогда-то (start_time) и разговаривал с тем то (dnowner), такой то вот тогда то первый раз и тд. Если номер звонил несколько раз, нам нужно только дата первого звонка, остальное не интересует. Надеюсь, так понятнее
Скрин внизу - это то, что на данный момент выходит. Со вторым запросом
Миниатюры
Группировка по полю с добавлением даты  
0
411 / 365 / 142
Регистрация: 09.04.2011
Сообщений: 1,051
13.01.2019, 14:11
Лучший ответ Сообщение было отмечено Vyazan как решение

Решение

не везде заменил call_id на party_callerid
попробуйте
MySQL
1
2
3
4
SELECT t.dnowner, t.party_callerid, t.start_time
FROM myphone_callhistory_v14 AS t JOIN
(SELECT party_callerid, MIN(start_time) AS mtime FROM myphone_callhistory_v14 GROUP BY party_callerid) AS t1 
ON t.party_callerid = t1.party_callerid AND t.start_time = t1.mtime
1
 Аватар для Vyazan
12 / 12 / 2
Регистрация: 19.03.2012
Сообщений: 175
13.01.2019, 22:09  [ТС]
Огромное спасибо! Вроде работает правильно, надо в понедельник протестить более подробно
0
 Аватар для Vyazan
12 / 12 / 2
Регистрация: 19.03.2012
Сообщений: 175
14.01.2019, 14:43  [ТС]
Да, все работает, как часы! Спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.01.2019, 14:43
Помогаю со студенческими работами здесь

Группировка по одному полю, где другое одинаковое
Добрый день господа! Нужно сформировать группировку запроса, из такого: 01:00 | title#1 20:00 | title#1 20:00 | title#2 20:00...

Выборка совпадений по полю в БД и группировка данных
Есть таблица 'statistics', в таблице есть данные о пользователях 'id', 'sn', 'external_ip'. Нужно отобразить и сгруппировать всех...

Не допускается группировка по полю - ресурсу в колонках таблицы
Всем добрый день! Пытаюсь создать вычисляемое поле и беда. :( Вот принт вкладки Вычисляемые поля И при попытке создать...

Контекстное меню: Архивация с добавлением даты в имя файла
Здравствуйте. Изучил тему, но не смог найти решение для своей задачи. Задача: создать в контекстном меню команду архивации с...

Сохранение и загрузка текстового файла с добавлением даты в его контент
Сохраняю данные в текстовый файл из ListBox1, подскажите как прикрутить к тексту дату и время сохранения? Public D As Date = Now Public...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru