Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как сформировать запрос... [D5, MSSQL, MySQL]


AndrewK ©   (2002-04-02 16:52:00) 

Уважаемые мастера, посоветуйте как быть.

Есть выборка:

Группа Изделие Кол-во Доля в общем кол-ве

Группа 1 Изделие 1 10 надо получить
Группа 1 Изделие 2 15 надо получить
Группа 1 Изделие 3 40 надо получить
Группа 2 Изделие 4 2 надо получить
Группа 2 Изделие 5 1 надо получить
Группа 2 Изделие 6 7 надо получить


Надо сделать отчет по группам. Доля считается как кол-во текущих изделий в группе деленное на общее число изделий в этой группе. Причем требуют затем отсортировать группы по суммарному количеству изделий в группе.

Может кто сталкивался с подобной задачей? С какой стороны надр подойти к решению?


Bachin   (2002-04-02 20:51:00) [1]

select
a.gr, a.it, a.ss, b.ss
from tab1 a,
(select gr, sum(IsNull(ss,0)) as ss from tab1 group by gr) b
where
a.gr = b.gr
order by b.ss desc


Fay   (2002-04-02 19:10:00) [2]

Не проверял. Думаю в MSSQL прокатит.

SELECT
[Группа] = s1.[Группа],
[Изделие] = s1.[Изделие],
[Кол-во] = s1.[Кол-во по группе_изделию],
[Доля в общем кол-ве] = s1.[Кол-во по группе_изделию]/s2.[Кол-во по группе]
FROM
(SELECT
[Группа],
[Изделие],
[Кол-во по группе_изделию] = SUM([Кол-во])
FROM [Твоя таблица]
GROUP BY
[Группа],
[Изделие]
) s1 INNER JOIN
(SELECT
[Группа],
[Кол-во по группе] = SUM([Кол-во])
FROM [Твоя таблица]
GROUP BY [Группа]
HAVING SUM([Кол-во])>0
) s2 ON s1.[Группа] = s2.[Группа]
ORDER BY s1.[Кол-во по группе_изделию]


Mike S   (2002-04-02 17:55:00) [3]

Что-то вроде этого.
CREATE procedure Recalc
as

declare @SumAll int
select @SumAll = Sum(Кол-во) from Table where Grupa = Группа 1

update Table
set Доля = Кол-во/@SumAll
where Grupa = Группа 1
go


Johnmen   (2002-04-02 17:30:00) [4]

Придется реализовать несколько запросов...
Как реализовать - дело вкуса...
Ну а потом в программе описать логику взаимодействия...


Lusha   (2002-04-02 17:12:00) [5]

Лично я бы создал VIEW

CREATE VIEW View1 AS
SELECT Группа1, SUM(Кол-во)
FROM Table1
GROUP BY Группа1

Ну, а дальше дешево и сердито один банальный SELECT...


Наверх

Титульная страница Поиск, карта сайта Написать письмо