Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Подсчет общей суммы по Group By / 10 сообщений из 10, страница 1 из 1
06.09.2005, 13:47:10
    #33253858
Vilia
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчет общей суммы по Group By
Код: 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
06.09.2005, 19:08:56
    #33254883
Валентин К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчет общей суммы по Group By
Конструкция Group By устраняет пустоты по группируемым полям.
Можно подзапросом вытянуть,
какая версия MySQL ?
...
Рейтинг: 0 / 0
06.09.2005, 21:01:09
    #33254993
Vilia
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчет общей суммы по Group By
MySQL 4.1.13-nt на localhost как root@localhost
...
Рейтинг: 0 / 0
07.09.2005, 01:24:22
    #33255116
Хрен
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчет общей суммы по Group By
см. WITH ROLLUP в документации.
тут например
...
Рейтинг: 0 / 0
07.09.2005, 09:18:37
    #33255317
Vilia
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчет общей суммы по Group By
Не то, щас запрос, делает всё что надо, но из-за нескольких проходах при поиске по таблицам считает сумму неверно, а пустые строки я решил добавлять программно =(.
Код: 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
07.09.2005, 13:17:44
    #33256210
Валентин К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчет общей суммы по Group By
Хорошее решение :)
я сам люблю для таких вещей union, причем выполняется он очень быстро
...
Рейтинг: 0 / 0
07.09.2005, 13:39:12
    #33256310
Vilia
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчет общей суммы по Group By
Да, но как избавиться от неверного подсчета суммы?!
Т.е. в чем проблема:
Поиск идет по двум таблицам, как известно, он перебирает всё пары из двух таблиц, далее если подходит под условия он их считает, но для избежания повторения в count() предусмотрена деректива DISTINCT, но как избавиться от этого повторения в sum()?!

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

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

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

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

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


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