powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как правильно посчитать количество записей по условию
11 сообщений из 11, страница 1 из 1
Как правильно посчитать количество записей по условию
    #39739123
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите как лучше всего посчитать количество уникальных записей. Уникальность проверяется по 3 полям.
Делаю так:
Код: sql
1.
select count(app_num) from (select DISTINCT app_num, cal_num, code_jeo from SERVICE)



Тестовый пример маленький и результат выдает достаточно быстро - 286 записей. в плане видно 368 чтений из кеша.
Понимаю что для большой таблицы - это будет достаточно долго.


--------------------------
Firebird 3.0.4.33054;
IBExpert 2018.5.14.1;
Windows 10 32-bit;
4Gb RAM;
SSD 512Mb + HDD 1 Tb;
Настройки по умолчанию

Среда разработки:
Delphi XE2 + FIBPlus 7.4
...
Рейтинг: 0 / 0
Как правильно посчитать количество записей по условию
    #39739133
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select count(DISTINCT app_num||cal_num||code_jeo) from SERVICE
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как правильно посчитать количество записей по условию
    #39739135
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лучше всего количество вообще не считать. Сэкономленную энергию - направить на что-то
полезное.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как правильно посчитать количество записей по условию
    #39739143
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЛучше всего количество вообще не считать. Сэкономленную энергию - направить на что-то
полезное.


Не спорю, но я веду разбор 1 таблицы на 3 и мне надо сравнить количество записей - все ли перенеслись или какая-то запись не попала.
...
Рейтинг: 0 / 0
Как правильно посчитать количество записей по условию
    #39739144
Фэйтл Эра
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrushDimitry SibiryakovЛучше всего количество вообще не считать. Сэкономленную энергию - направить на что-то
полезное.


Не спорю, но я веду разбор 1 таблицы на 3 и мне надо сравнить количество записей - все ли перенеслись или какая-то запись не попала.
После "разбора" выбросишь исключение, если какая-то не попала?:)
...
Рейтинг: 0 / 0
Как правильно посчитать количество записей по условию
    #39739148
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фэйтл ЭраПосле "разбора" выбросишь исключение, если какая-то не попала?:)

Нет, надо найти причину. Записи должны быть все.
...
Рейтинг: 0 / 0
Как правильно посчитать количество записей по условию
    #39739149
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
27.11.2018 14:20, akrush пишет:

> мне надо сравнить количество записей - все ли перенеслись или какая-то запись не попала.

как это она может "не попасть" ?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как правильно посчитать количество записей по условию
    #39739150
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrushя веду разбор 1 таблицы на 3 и мне надо сравнить количество записей - все ли перенеслись
или какая-то запись не попала.

Сравнивай простой count() из старой таблицы и count() из запроса, делающего из новых
таблиц старую.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как правильно посчитать количество записей по условию
    #39739164
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прошу у всех прощения, но я не все написал.
В старой 1 таблице данные по столбцам: услуга 1, услуга 2 ... услуга 8. Есть еще связанные аналогично столбцы: начисленоN и оплаченоN.
В новой таблице столбцы переводятся в строки.

Есть поле в котором перечислены побитно какие услуги задействованы. Но может быть так что ввели просто общую сумму начислено и оплата, без выбора услуг, в этом случае побитное поле равно 0 (это логично, т.к. нет перечня услуг)
Я уже определил что, в последнем случае, я терял записи так ориентировался только на наличие перечня услуг.
Внес исправления в программу, но вот подумал - а может еще что-то теряется.

Выборку по количеству я думал сделать по ключевым полям которые есть в старой и новой таблице.
Да, я не спорю что можно потерять какую-то услугу. Над этим я тоже работаю.
Пока у меня цель получить одинаковое количество записей по выбранным ключевым полям.
...
Рейтинг: 0 / 0
Как правильно посчитать количество записей по условию
    #39739169
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrush,

если операция разовая, то не стоит убиваться над оптимизацией. Если нет, то стоит серьезно пересмотреть логику работы, таких проверок быть не должно.
...
Рейтинг: 0 / 0
Как правильно посчитать количество записей по условию
    #39739199
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисakrush,

если операция разовая, то не стоит убиваться над оптимизацией. Если нет, то стоит серьезно пересмотреть логику работы, таких проверок быть не должно.

Скажем так - это продолжение темы "кларион отфаербердить" ;)
Операция будет разовая, но, на сегодняшний день, повторятся у 217 клиентов. У десятки из них 2-4 базы.
Сам контролировать процесс на 100% не смогу, поэтому делаю разного рода протоколы и контроли.
Если увижу что то что не конвертировалось - серьезная ошибка, планирую выдать сообщение о приостановке конвертации и обращения к разработчику.
Но думаю таких будет не много. Основная масса справится самостоятельно.

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


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