5 / 5 / 1
Регистрация: 11.02.2013
Сообщений: 238
|
|
1 | |
функция СУМ26.02.2013, 09:46. Показов 1392. Ответов 11
Метки нет (Все метки)
Добрый день, уважаемые форумчане. Я новичок SQL, возник вопрос по использованию функции SUM. Есть два столбца: Прогноз, Результат. Необходимо вывести следующий запрос:
Три столбца, все должны быть упорядочены по восрастанию третьего столбца Резульат, Прогноз, Упорядочивание по возрастанию(Прогноз / SUM (Прогноз)) Запутался с оператором group by, в результате получается какая-то ерунда
0
|
26.02.2013, 09:46 | |
Ответы с готовыми решениями:
11
Расчет контрольных сум Вычисление сум рекурсией Сумма сум факториалов значения заданых сум |
71 / 71 / 23
Регистрация: 02.02.2012
Сообщений: 309
|
|||||||||||
26.02.2013, 10:35 | 2 | ||||||||||
Можно так.
поправка
0
|
5 / 5 / 1
Регистрация: 11.02.2013
Сообщений: 238
|
||||||
26.02.2013, 10:55 [ТС] | 3 | |||||
Попробовал конструкцию, ругается на скобку
Incorrect syntax near ')'.
0
|
71 / 71 / 23
Регистрация: 02.02.2012
Сообщений: 309
|
|||||||||||
26.02.2013, 11:01 | 4 | ||||||||||
1
|
5 / 5 / 1
Регистрация: 11.02.2013
Сообщений: 238
|
|
26.02.2013, 11:23 [ТС] | 5 |
А что делает функционал temp1?
0
|
71 / 71 / 23
Регистрация: 02.02.2012
Сообщений: 309
|
|
26.02.2013, 11:35 | 6 |
Это просто имя таблицы, которую sql сформировал вложенным запросом. Можете заменить его на что угодно, но имя здесь должно быть.
0
|
5 / 5 / 1
Регистрация: 11.02.2013
Сообщений: 238
|
|
26.02.2013, 11:41 [ТС] | 7 |
SELECT code, warehouse, forecast1, Ratio
FROM ( SELECT code, warehouse, forecast1, forecast1/(SELECT SUM (forecast1) FROM dbo.Article WHERE [warehouse] = '20663-') AS Ratio FROM dbo.Article ) temp1 ORDER BY Ratio Не подскажете, почему в этой конструкции не срабатывает WHERE [warehouse] = '20663-')? Специально завел столбец warehouse чтобы отслеживать, что пишет. Добавлено через 1 минуту Просто для временного сохранения в буфер? Добавлено через 2 минуты Блин, не там поставил критерий отбора. Уже понял. Спасибо!
0
|
71 / 71 / 23
Регистрация: 02.02.2012
Сообщений: 309
|
||||||
26.02.2013, 11:48 | 8 | |||||
Просто потому что оно должно быть. Видимо считают что синтаксис так схож.
Вообще все правильно, а какую ошибку выдает? И еще стоит следить за делением на ноль.
1
|
5 / 5 / 1
Регистрация: 11.02.2013
Сообщений: 238
|
||||||
26.02.2013, 12:51 [ТС] | 9 | |||||
Сейчас конструкция вроде заработала. Я наверное несколько наглею, но позволю вам задать еще один вопрос, может подскажете...
Формирую столбец ABC, которы принимает значения С для элементов Ratio от 1 до round(0.05*count(Ratio)) B для элементов Ratio от round(0.05*count(Ratio))+1 до round(0.15*count(Ratio)) A для элементов Ratio от round(0.15*count(Ratio))+1 до count(Ratio) то есть столбец Ratio делится на три группы 5%, 15% и 80% Думаю использовать конструкцию case case when Then End Не пойму как сравнивать количества значений, а не сами значения Ratio Вот как бы мне на номера элементов столбца перейти. If number(Ratio)>... to A и т.д. Добавлено через 19 минут Наверное что-то типа LEN(colmn) Добавлено через 19 минут Решил не пользоваться индексами и использовать значения столбца и по ним вести ранжирование. Новоял такую конструкцию
0
|
71 / 71 / 23
Регистрация: 02.02.2012
Сообщений: 309
|
|
26.02.2013, 12:57 | 10 |
Я тоже не пойму вопрос. Что с чем хотите сравнивать?
Добавлено через 5 минут 1. Ratio во вложенном селекте не существует, его можно использовать только во внешнем запросе. 2. MAX(Ratio) - Это максимальный Ratio? Кликните здесь для просмотра всего текста
Вообще логика мне подсказывает, что тут что то не то с логикой. Поясните лучше, что это за категории ABC, какая смысловая нагрузка на них?
0
|
5 / 5 / 1
Регистрация: 11.02.2013
Сообщений: 238
|
|
26.02.2013, 13:03 [ТС] | 11 |
Да, MAX(Ratio) - это максимальный Ratio
Логика такая: в зависимости от значений Ratio в столбец ABC писать A, B или С Как пропсиать значение MAX(Ratio) чтобы я мог его использовать в запросе как обычный параметр, включать в сравнения и т.п...
0
|
71 / 71 / 23
Регистрация: 02.02.2012
Сообщений: 309
|
|||||||||||
26.02.2013, 13:16 | 12 | ||||||||||
ну ясно, если нет задачи все решить в один селект, то можно сделать темповую таблицу, получить макс из нее и использовать ее для дальнейшей выборки.
ну по типу:
Но можно запихнуть и в один но работать должно хуже:
1
|
26.02.2013, 13:16 | |
26.02.2013, 13:16 | |
Помогаю со студенческими работами здесь
12
Описать функцию СУМ(А), вычисляющую величину x(1)x(n)+x(2)x(n-1)+…+x(n)x(i) скласти програму для обчислення скінченних сум Найти сум¬му и произведение элементов K-й строки матрицы. перестановка двухмерного самива по убыванию сум негативных чисел Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |