Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.04.22;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.006 c
1-69762
AFROLOV
2002-04-08 13:21
2002.04.22
Как использовать в Delphiклассы и перегруженные для них операторы


1-69776
SVM
2002-04-10 10:09
2002.04.22
Delphi 1


3-69681
tovSuhov
2002-03-29 11:19
2002.04.22
Вопрос по DBMS_PIPE


6-69960
Garmahis
2002-02-07 23:59
2002.04.22
Работа с реестром.


1-69801
SergeyB
2002-04-10 11:51
2002.04.22
События в режиме разработки





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский