powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Подсчёт в одном поле двух сумм
8 сообщений из 8, страница 1 из 1
Подсчёт в одном поле двух сумм
    #39976580
kormot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день Товарищи!

В программе зачастую бывают ситуации где для какой-то сущности есть набор данных со свойством ДА / НЕТ.
И соответственно когда запрашиваю статистику по сущности, то возникает такой запрос:
Код: sql
1.
2.
SELECT   aa.entityID, SUM(IF(aa.flag=0,1,0)) cnt0, SUM(IF(aa.flag=1,1,0)) cnt1
GROUP BY aa.entityID



А есть ли какие-то принципиальные минусы вариант с подсчётом в одном поле
Код: sql
1.
2.
SELECT   aa.entityID, SUM(IF(aa.flag=0,1,0.000000001)) cntAll
GROUP BY aa.entityID



Ну и последующим выделением умножением и INT'ом? Предполагая что множитель покрывает максимально возможное количество подсчитываемых элементов. Не может ли возникнуть ошибки из-за может какой-то точности у MySQL с накоплением при суммах некоей дельты, или может по производительности это проблемный вариант?
...
Рейтинг: 0 / 0
Подсчёт в одном поле двух сумм
    #39976584
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kormot
Не может ли возникнуть ошибки из-за может какой-то точности у MySQL с накоплением при суммах некоей дельты, или может по производительности это проблемный вариант?

Может. Или на sql'е или на клиенте.
kormot
А есть ли какие-то принципиальные минусы вариант с подсчётом в одном поле

Но зачем? Полей жалко?

зы.
SELECT aa.entityID, SUM(IF(aa.flag=0,1,0.000000001)) cntAll
У нас победитель в номинации "Костыль месяца"! Примите поздравления!
...
Рейтинг: 0 / 0
Подсчёт в одном поле двух сумм
    #39976589
kormot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
У нас победитель в номинации "Костыль месяца"! Примите поздравления!

Отлично! Ещё бы призовые выдали, можно было б и дальше костылить не покладая рук :)
...
Рейтинг: 0 / 0
Подсчёт в одном поле двух сумм
    #39976595
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kormot,

Можно замутить постоянную рубрику с донатом и призовыми. Автор самого адского костыля 1 числа забирает все донаты с пожеланиями.
...
Рейтинг: 0 / 0
Подсчёт в одном поле двух сумм
    #39976616
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kormot
Код: sql
1.
SUM(IF(aa.flag=0,1,0.000000001))

Лучше в целых числах, чтобы не было потери точности:
Код: sql
1.
SUM(IF(aa.flag=0,100000000,1))
...
Рейтинг: 0 / 0
Подсчёт в одном поле двух сумм
    #39976623
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kormot
И соответственно когда запрашиваю статистику по сущности, то возникает такой запрос:
Код: sql
1.
SELECT   aa.entityID, SUM(IF(aa.flag=0,1,0)) cnt0, SUM(IF(aa.flag=1,1,0)) cnt1


Ну и зачем тебе это масло масляное? в MySQL можно избавиться от лишних проверок, написав просто
Код: sql
1.
SELECT   aa.entityID, SUM(aa.flag=0) cnt0, SUM(aa.flag=1) cnt1


А если aa.flag не имеет иных, кроме 0 и 1, значений, так и вовсе
Код: sql
1.
2.
3.
SELECT   aa.entityID, SUM(aa.flag=0) cnt0, SUM(aa.flag) cnt1
-- или 
SELECT   aa.entityID, COUNT(aa.flag)-SUM(aa.flag) cnt0, SUM(aa.flag) cnt1



kormot
есть ли какие-то принципиальные минусы вариант с подсчётом в одном поле

Если не считать возможных потери точности, наложения значений, оверхеда от работы с вещественными, а также затрат на парсинг на клиенте - наверное, нет.
...
Рейтинг: 0 / 0
Подсчёт в одном поле двух сумм
    #39976624
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
del
...
Рейтинг: 0 / 0
Подсчёт в одном поле двух сумм
    #39976645
kormot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо Товарищи!

Даже, как правильно заметил crutchmaster - в полном костыле, можно извлечь исключительную пользу. :)

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


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