|
|
|
Сумма с накоплением
|
|||
|---|---|---|---|
|
#18+
Тут недавно столкнулся с проблемой выделить фирмы которые занимают 80% от общего объема продаж. Причем это может относится и к общему объему и к группам товаров и к товарам. В отчетах это реально (функция RunningSum) а как посчитать в формах или запросах ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2004, 12:11 |
|
||
|
Сумма с накоплением
|
|||
|---|---|---|---|
|
#18+
авторТут недавно столкнулся с проблемой выделить фирмы которые занимают 80% от общего объема продаж. пример: фирма; объем продаж ----------------------- 1; 10 2; 20 3; 10 4; 40 5; 20 вариантов ответов несколько: 1 2 3 4 1 3 4 5 2 4 5 какой надо получить? И это только при строгом соответствии :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2004, 12:22 |
|
||
|
Сумма с накоплением
|
|||
|---|---|---|---|
|
#18+
To Paparome Ты не повериш но у меня позавчера стояла такая задача =))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2004, 12:28 |
|
||
|
Сумма с накоплением
|
|||
|---|---|---|---|
|
#18+
Alexander PopovTo Paparome Ты не повериш но у меня позавчера стояла такая задача =))) Задача о рюкзаке - блин :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2004, 12:30 |
|
||
|
Сумма с накоплением
|
|||
|---|---|---|---|
|
#18+
Извиняюсь не сказал главного. Нужны самые крупные фирмы (по объему) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2004, 12:30 |
|
||
|
Сумма с накоплением
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. ЧТо-то в этом духе :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2004, 12:40 |
|
||
|
Сумма с накоплением
|
|||
|---|---|---|---|
|
#18+
Код: plaintext кончно же :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2004, 12:45 |
|
||
|
Сумма с накоплением
|
|||
|---|---|---|---|
|
#18+
ЗЫ Считаю, что name уникально! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2004, 12:46 |
|
||
|
Сумма с накоплением
|
|||
|---|---|---|---|
|
#18+
Я сделал так: подсчитал общую сумму потом задал вечный цикл в котором курсор и условие на проверку. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2004, 12:50 |
|
||
|
Сумма с накоплением
|
|||
|---|---|---|---|
|
#18+
К paparome Слушай я так понял ты завернул сразу с рассчетом процентов? проценты я сделаю это не проблема, а вот сумма с накоплением да. я попробовал понять, что ты написал, но что-то туго получается Х-сов слишком много в глазах. Напиши если можно как для чайников (по-подробнее) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2004, 12:50 |
|
||
|
Сумма с накоплением
|
|||
|---|---|---|---|
|
#18+
Сорри в этом месте нужно вот так Код: plaintext 1. 2. До тех пор пока у тебя суммы продаж не вылезут за 80% данные будут копироватся во временную таблицу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2004, 12:52 |
|
||
|
Сумма с накоплением
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. Пожалуйста - если так понятнее :( (читабельность (ИМХО) снизилась) [Название фирмы] - уникальное поле (как я уже говорил) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2004, 12:59 |
|
||
|
Сумма с накоплением
|
|||
|---|---|---|---|
|
#18+
Щас попробую. заранее благодарен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2004, 13:05 |
|
||
|
Сумма с накоплением
|
|||
|---|---|---|---|
|
#18+
2 NikP Код: plaintext Предположим , что имеем таблицу t Код: plaintext 1. 2. 3. 1 Через кореллированный подзапрос Код: plaintext 1. 2 Через самообьединение (как делал paparome) Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2004, 13:21 |
|
||
|
Сумма с накоплением
|
|||
|---|---|---|---|
|
#18+
К (c)VIG Сделал как ты написал, через самообьединение (как делал paparome) + небольшие добавки SELECT [Таб].[Фирма], [Таб].[Тоннаж], sum([Таб].[Тоннаж]) AS RunningSum FROM Таб INNER JOIN Таб AS Таб1 ON Таб1.Фирма<=[Таб].[Фирма] GROUP BY [Таб].[Фирма], [Таб].[Тоннаж] ORDER BY [Таб].[Тоннаж] DESC , [Таб].[Фирма]; Работать работает, но проверить правильно считает или нет не могу. пытался проверять также как в варианте с отчетами полная хрень получается ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2004, 14:09 |
|
||
|
Сумма с накоплением
|
|||
|---|---|---|---|
|
#18+
К (c)VIG Ну я и стормозил поставил AS перед RunningSum (он мне ошибку выдавал) RunningSum это я так понимаю не функция конкретная ее расписывать надо Я правильно понял? Если да распиши пожалуйста у тебя все коротко и понятно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2004, 14:20 |
|
||
|
Сумма с накоплением
|
|||
|---|---|---|---|
|
#18+
авторSELECT [Таб].[Фирма], [Таб].[Тоннаж], sum([Таб].[Тоннаж]) AS RunningSum FROM Таб INNER JOIN Таб AS Таб1 ON Таб1.Фирма<=[Таб].[Фирма] GROUP BY [Таб].[Фирма], [Таб].[Тоннаж] ORDER BY [Таб].[Тоннаж] DESC , [Таб].[Фирма]; Это (ИМХО) работает не правильно - ибо GROUP BY ... [Таб].[Тоннаж] даст такой результат: sum([Таб].[Тоннаж]) = [Таб].[Тоннаж] т.е. ИМХО - надо ставить sum([Таб1].[Тоннаж]) И в данном запросе суммирование с накоплением идет для сортировки по полю фирма (это я не про ордер, а про условие объединения Таб1.Фирма<=[Таб].[Фирма] ) В ТЗ явно другое было сказано :( 2 автор чем вам мой вариант не угодил? почти готовый запрос (опять же ИМХО) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2004, 14:28 |
|
||
|
Сумма с накоплением
|
|||
|---|---|---|---|
|
#18+
К Paparome Я не сильно продвинут во всем этом. Взял что по-короче. Сейчас обработал твой вариант (склеил первый короткий и второй подробный у себя в мозгах). Вроде получилось. Только вот ошибку выдает не находит Таб3. Я честно говоря сам не до конца догнал что ты имел ввиду под Таблица3(1вариант) и Фирмы(2вариант). Подскажи будь другом SELECT [Таб].[Фирма], [Таб].[Тоннаж], sum([Таб1].[Тоннаж]) AS Тоннаж1, 100*sum([Таб1].[Тоннаж])/(Select Sum([Тоннаж]) From Таб3) as proc FROM Таб3 As Таб INNER JOIN Таб3 AS Таб1 ON (([Таб].[Тоннаж]<[Таб1].[Тоннаж]) or ([Таб].[Тоннаж]=[Таб1].[Тоннаж]) and ([Таб].[Фирма]>=[Таб1].[Фирма])) GROUP BY [Таб].[Фирма], [Таб].[Тоннаж] ORDER BY [Таб].[Тоннаж] DESC , [Таб].[Фирма]; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2004, 15:13 |
|
||
|
Сумма с накоплением
|
|||
|---|---|---|---|
|
#18+
авторЯ честно говоря сам не до конца догнал что ты имел ввиду под Таблица3(1вариант) и Фирмы(2вариант). Подскажи будь другом Дык - я когда запрос отлаживал, не знал как ваша табла называется - вот и дал ей название, какое мне понравилось :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2004, 15:17 |
|
||
|
Сумма с накоплением
|
|||
|---|---|---|---|
|
#18+
К Paparome Все работает!!! Просто супер! Спасибо огромное! Предоставляю последний вариант. Кто знает может кто-нибудь так же как и я не до конца все понял. SELECT [Таб].[Фирма], [Таб].[Тоннаж], sum(Таб1.Тоннаж) AS Тоннаж1, 100*sum([Таб1].[Тоннаж])/(Select Sum([Тоннаж]) From [Исходная Таб]) AS [Проценты] FROM [Исходная Таб] AS Таб INNER JOIN [Исходная Таб] AS Таб1 ON ([Таб].[Тоннаж]<Таб1.Тоннаж) Or ([Таб].[Тоннаж]=Таб1.Тоннаж) And ([Таб].[Фирма]>=Таб1.Фирма) GROUP BY [Таб].[Фирма], [Таб].[Тоннаж] ORDER BY [Таб].[Тоннаж] DESC , [Таб].[Фирма]; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2004, 15:56 |
|
||
|
Сумма с накоплением
|
|||
|---|---|---|---|
|
#18+
2 NikP Ты бы привел структуру таблицы и тестовые данные, было бы проще. А так могу сказать , что в общем случае твой запрос (впрочем ,как и у paparome) будет не правильно работать. Хотя в частных случаех может давать и правильный результат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2004, 17:39 |
|
||
|
Сумма с накоплением
|
|||
|---|---|---|---|
|
#18+
К (c)VIG Обижаешь! Я просто так Ура! не кричу. Все протестировал. Кинул результаты в Excel проставил формулы все It's very good ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2004, 19:56 |
|
||
|
Сумма с накоплением
|
|||
|---|---|---|---|
|
#18+
2 NikP Рад за тебя. Но что даст твой запрос при таких вот исходных данных? Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2004, 20:43 |
|
||
|
Сумма с накоплением
|
|||
|---|---|---|---|
|
#18+
К (c)VIG Понимаешь в чем дело если ты заранее не сделаешь запрос с группировкой по фирме и Sum по отгрузке, то конечно получишь полную чушь. Я согласен, что запрос можно дополнить, чтобы не делать сначала один запрос, а потом другой. Но для меня важен был сам процесс рассчета суммы с накоплением, а остальное мелочи жизни ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2004, 10:06 |
|
||
|
Сумма с накоплением
|
|||
|---|---|---|---|
|
#18+
(c)VIG2 NikP Рад за тебя. Но что даст твой запрос при таких вот исходных данных? Код: plaintext 1. 2. 3. 4. 5. 6. VIG - обитеть хотишь? Ястно, что незная структуры таблицы, я взял название фирмы как ключевое поле (ну должно же быть ключевое поле - вот его и используем) me от 11 июн 04, 12:46 ЗЫ Считаю, что name уникально! PS: Это и ужу понятно, что при отсутствии уникальности по наме фигня получится!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2004, 10:18 |
|
||
|
|

start [/forum/topic.php?fid=45&fpage=1611&tid=1673858]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
58ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
| others: | 228ms |
| total: | 388ms |

| 0 / 0 |
