Главная страница
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.48 MB
Время: 0.017 c
14-70016
Lego
2002-03-16 02:15
2002.04.22
Как выключить вообще комбинацию клавиш ALT + F4?


1-69895
DeMoN-777
2002-04-09 00:43
2002.04.22
Проблема с текстовымми файлами


6-69955
Трактор
2002-02-08 18:26
2002.04.22
Internet


3-69653
Зинец Виктор
2002-03-27 11:00
2002.04.22
Доступ к базе данных через инет


14-70018
Alexandr
2002-03-15 11:38
2002.04.22
Поцарапанный экран монитора