:: Не фоксом единым
SLQ группировка
Артём
Автор

Сообщений: 116
Дата регистрации: 23.04.2001
Есть база с полями

where - куда продали
quantity - сколько продали
date - когда продали

Нужно, например, найти чемпионов по продажам по месяцам - куда продано больше всего.
я делаю группировку по выражению типа str(year/month) + str(where)
и всегда так делал.
на foxpro как то так
SELECT sale.quantity, sale.price, inv_sell.date, inv_sell.where,;
SUBSTR( DTOS(inv_sell.date), 3, 4)+ TRANSFORM( inv_sell.where, '99') AS Gr1;
FROM sale, inv_sell, purchase;
WHERE (sale.inv_sell = inv_sell.code).AND.;
(purchase.main_code = sale.purchase).AND.;
(purchase.goodies = 228);
INTO CURSOR sql1
SELECT gr1, SUM(quantity) FROM sql1 GROUP BY gr1


Но тут появились подозрения, что я чего-то не знаю

можно ли как то , хитрыми волшебными словами, сделать иначе?



Исправлено 2 раз(а). Последнее : Артём, 14.11.22 13:05
Ratings: 0 negative/0 positive
Re: SLQ группировка
dimag

Сообщений: 464
Откуда: Одинцово
Дата регистрации: 17.12.2002
Что то типа такого:
SELECT sum(sale.quantity) AS quantity, month(inv_sell.date) AS date, inv_sell.where ;
FROM sale ;
INNER JOIN inv_sell ON sale.inv_sell = inv_sell.code ;
INNER JOIN purchase ON purchase.main_code = sale.purchase ;
WHERE purchase.goodies = 228 ;
GROUP BY inv_sell.date, inv_sell.where ;
INTO CURSOR sql1


------------------
Глупость - это не отсутствие ума, это такой ум.
Ratings: 0 negative/1 positive
Re: SLQ группировка
Владимир Максимов

Сообщений: 14095
Откуда: Москва
Дата регистрации: 02.09.2000
В принципе, "если работает - не трогай"

А если надо узнать какие-то новые правила, то

1. Желательно использовать JOIN для объединения таблиц
2. Желательно вместо конструирования строки группировки использовать группировку по нескольким полям или выражениям

Т.е. в Вашем случае, запрос следовало бы построить так

select
year(inv_sell.date) as yearDate,
month(inv_sell.date) as monthDate,
inv_sell.where,
sum(sale.quantity) as sumQuantity
from sale
inner join inv_sell on inv_sell.code = sale.inv_sell
inner join purchase on purchase.main_code = sale.purchase
where purchase.goodies = 228
group by
year(inv_sell.date),
month(inv_sell.date),
inv_sell.where
Ratings: 0 negative/1 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 4 (Гостей: 4)

© 2000-2024 Fox Club 
Яндекс.Метрика