![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как сформировать запрос... [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...