Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.04.22;
Скачать: CL | DM;

Вниз

Как сформировать запрос...   Найти похожие ветки 

 
AndrewK ©   (2002-04-02 16:52) [0]

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

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

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

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


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

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


 
Lusha ©   (2002-04-02 17:12) [1]

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

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

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


 
Johnmen ©   (2002-04-02 17:30) [2]

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


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

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

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

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


 
Fay ©   (2002-04-02 19:10) [4]

Не проверял. Думаю в 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.[Кол-во по группе_изделию]


 
Bachin ©   (2002-04-02 20:51) [5]

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



Страницы: 1 вся ветка

Текущий архив: 2002.04.22;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.017 c
7-70041
Brand
2002-01-27 12:52
2002.04.22
Автозагрузка


1-69923
Vlad_Leon
2002-04-09 08:41
2002.04.22
Как сменить раскладку клавиатуры?


3-69675
IronHawk
2002-03-28 13:34
2002.04.22
Приветствую Мастеров ! Всевозможные операции в базе !


14-70013
hooky-mars
2002-03-13 12:41
2002.04.22
Проверка


14-69986
Провинциал
2002-03-13 13:13
2002.04.22
Работа в Москве?