powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Подсчет общей суммы по Group By
10 сообщений из 10, страница 1 из 1
Подсчет общей суммы по Group By
    #33253858
Vilia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SELECT 
FROM_DAYS(floor((TO_DAYS(shop_order.order_date))/ 7 )* 7 ) as start,
FROM_DAYS(floor((TO_DAYS(shop_order.order_date))/ 7 )* 7  +  6 ) as end,
count(DISTINCT shop_order.id) as amount,
count(DISTINCT IF(shop_order.order_status='new', shop_order.id, NULL) ) as amountnew,
count(DISTINCT IF(shop_order.order_status='processed', shop_order.id, NULL) ) as amountproc,
sum(shop_order.total_amount) as amount1,
count(shop_ordered_item.order_id) as amount2
FROM shop_order, shop_ordered_item
where shop_ordered_item.order_id = shop_order.id
GROUP BY floor((TO_DAYS(shop_order.order_date))/ 7 );

Есть такой большой запрос на Mysql
Он группирует определенные данные по неделям, всё хорошо, но иногда есть недели, для которых не встречается ни одной записи, он их не выводит(инфу для этой недели), но мне надо чтобы он их выводил с нулевыми результатами, можно ли это как-нить сделать, и ещё, у меня ведется подсчет суммы для каждой недели( amount1 ), но, я хочу ещё узнать сумму за всё время, возможно ли это как нить сделать в этом запросе...

Заранее благодарен, Илья.
...
Рейтинг: 0 / 0
Подсчет общей суммы по Group By
    #33254883
Фотография Валентин К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конструкция Group By устраняет пустоты по группируемым полям.
Можно подзапросом вытянуть,
какая версия MySQL ?
...
Рейтинг: 0 / 0
Подсчет общей суммы по Group By
    #33254993
Vilia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MySQL 4.1.13-nt на localhost как root@localhost
...
Рейтинг: 0 / 0
Подсчет общей суммы по Group By
    #33255116
Фотография Хрен
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
см. WITH ROLLUP в документации.
тут например
...
Рейтинг: 0 / 0
Подсчет общей суммы по Group By
    #33255317
Vilia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не то, щас запрос, делает всё что надо, но из-за нескольких проходах при поиске по таблицам считает сумму неверно, а пустые строки я решил добавлять программно =(.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
(SELECT 
FROM_DAYS(floor((TO_DAYS(shop_order.order_date))/ 7 )* 7 ) as start,
FROM_DAYS(floor((TO_DAYS(shop_order.order_date))/ 7 )* 7  +  6 ) as end,
count(DISTINCT shop_order.id) as amount,
count(DISTINCT IF(shop_order.order_status='new', shop_order.id, NULL) ) as amountnew,
count(DISTINCT IF(shop_order.order_status='processed', shop_order.id, NULL) ) as amountproc,
sum(shop_order.total_amount) as amount1,
count(shop_ordered_item.order_id) as amount2
FROM shop_order, shop_ordered_item
where shop_ordered_item.order_id = shop_order.id
GROUP BY floor((TO_DAYS(shop_order.order_date))/ 7 ))
union 
(
select 
'0000-00-00' as start,
'9999-12-31' as end,
count(DISTINCT shop_order.id) as amount,
count(DISTINCT if (shop_order.order_status='new', shop_order.id, NULL)) as amountnew,
count(DISTINCT if (shop_order.order_status='processed', shop_order.id, NULL)) as amountproc,
sum(shop_order.total_amount) as amount1,
count(shop_ordered_item.order_id) as amount2
from shop_order, shop_ordered_item
where shop_ordered_item.order_id = shop_order.id
);
...
Рейтинг: 0 / 0
Подсчет общей суммы по Group By
    #33256210
Фотография Валентин К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хорошее решение :)
я сам люблю для таких вещей union, причем выполняется он очень быстро
...
Рейтинг: 0 / 0
Подсчет общей суммы по Group By
    #33256310
Vilia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, но как избавиться от неверного подсчета суммы?!
Т.е. в чем проблема:
Поиск идет по двум таблицам, как известно, он перебирает всё пары из двух таблиц, далее если подходит под условия он их считает, но для избежания повторения в count() предусмотрена деректива DISTINCT, но как избавиться от этого повторения в sum()?!

Для справки: Первый select для статиски по неделям, второй для общей статистики.

Вот если можно было бы узнать учтен этот id уже или нет, то я бы привернул бы в sum() условие и всё было бы хорошо...
...
Рейтинг: 0 / 0
Подсчет общей суммы по Group By
    #33256339
Фотография Валентин К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет времени на анализ твоего запроса, но принциписально делается так:
1) во временную таблицу запросом сохраняются результаты, которые должны быть извлечена подзапросом.
2) В запросе используем временную таблицу по ключу.

Временные таблицы видны только в той сессии из которой они созданы и автоматически удаляются при закрытии коннекта.
...
Рейтинг: 0 / 0
Подсчет общей суммы по Group By
    #33256350
BasV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vilia
Вот если можно было бы узнать учтен этот id уже или нет
Привет Vilia - а не пробовала использовать предикат IN?
...
Рейтинг: 0 / 0
Подсчет общей суммы по Group By
    #33259429
Vilia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Валентин КНет времени на анализ твоего запроса, но принциписально делается так:
1) во временную таблицу запросом сохраняются результаты, которые должны быть извлечена подзапросом.
2) В запросе используем временную таблицу по ключу.

Временные таблицы видны только в той сессии из которой они созданы и автоматически удаляются при закрытии коннекта.

Валентин, я буду Вам очень благодарен, если Вы уделите немного времени моей проблеме.
1) Временная таблица не подходит, т.к. я имею право только на 2 запроса.
Также нельзя юзать subselect.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Подсчет общей суммы по Group By
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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