Главная страница
    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.007 c
1-69800
DenKop
2002-04-10 11:20
2002.04.22
Файл


7-70039
Devid
2002-01-27 15:47
2002.04.22
Как из дельфи позвонить на другой комп


3-69656
Артём
2002-04-02 19:42
2002.04.22
Вопрос по триггерам


14-70030
antibiotik
2002-03-18 12:04
2002.04.22
Сеть


1-69908
DeMoN-777
2002-04-09 03:52
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский