|
Top 2 with ties (Некорректный результат запроса).Помогите, пожалуйста
|
|||
---|---|---|---|
#18+
Добрый день. Есть запрос вида SELECT top 2 with ties ROW_NUMBER() OVER (PARTITION BY Продукт ORDER BY Цена DESC) AS N , * FROM table1 where Продукт in ('Продукт 1', 'Продукт 2') order by ROW_NUMBER() OVER (PARTITION BY Организация ORDER BY COUNT(Цена) DESC) Но результат всё равно выдает по одной строке на каждый продукт. Если поставить TOP 6 - выдает по 3 строки. Как сделать запрос, чтобы результат был по 2 или более ROW_NUMBER() для каждого продукта? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 11:19 |
|
Top 2 with ties (Некорректный результат запроса).Помогите, пожалуйста
|
|||
---|---|---|---|
#18+
Прошу прощения опечатка.. Добрый день. Есть запрос вида SELECT top 2 with ties ROW_NUMBER() OVER (PARTITION BY Продукт ORDER BY Цена DESC) AS N , * FROM table1 where Продукт in ('Продукт 1', 'Продукт 2') order by ROW_NUMBER() OVER (PARTITION BY Продукт ORDER BY Цена DESC) Но результат всё равно выдает по одной строке на каждый продукт. Если поставить TOP 6 - выдает по 3 строки. Как сделать запрос, чтобы результат был по 2 или более ROW_NUMBER() для каждого продукта? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 11:25 |
|
Top 2 with ties (Некорректный результат запроса).Помогите, пожалуйста
|
|||
---|---|---|---|
#18+
select * from ( SELECT top 2 with ties ROW_NUMBER() OVER (PARTITION BY Продукт ORDER BY Цена DESC) AS N , * FROM table1 where Продукт in ('Продукт 1', 'Продукт 2') ) z where N <3 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 11:25 |
|
Top 2 with ties (Некорректный результат запроса).Помогите, пожалуйста
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 11:26 |
|
Top 2 with ties (Некорректный результат запроса).Помогите, пожалуйста
|
|||
---|---|---|---|
#18+
LoopN, в этом случае не сработает 'with ties', а это важно в моем случае. Если написать select * from ( SELECT ROW_NUMBER() OVER (PARTITION BY Продукт ORDER BY Цена DESC) AS N , * FROM table1 where Продукт in ('Продукт 1', 'Продукт 2') ) z where N <3 то получим только те записи, у которых ROW_NUMBER() = 3, а with ties дал бы результат всех записей, у которых цена такая же как и у ROW_NUMBER() = 3 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 11:37 |
|
Top 2 with ties (Некорректный результат запроса).Помогите, пожалуйста
|
|||
---|---|---|---|
#18+
myrzilka, Словами опишите, что должно быть на выходе. TOP(2) WITH TIES вам не подойдёт - печёнкой чую! Но надо убедиться после ваших разъяснений. Например, один продукт (PARTITION BY Продукт) может иметь две и более цены? Как это? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 12:34 |
|
Top 2 with ties (Некорректный результат запроса).Помогите, пожалуйста
|
|||
---|---|---|---|
#18+
iapНапример, один продукт (PARTITION BY Продукт) может иметь две и более цены? Как это? ну например там еще есть колонка "модель" или "сорт". и вот у него есть продукт = яблоко, сортов аж 10, из них только у 5ти одинаковая цена. и хочет он вывести 2 любых самых дорогих, но именно яблок. т.е. из 5 сортов по одной и той же цене вывести только 2(первые попавшиеся?). и то же самое для продукта "груша" --- уж собрать тестовую табличку с 3 полями и десятком строк наверное дело 5ти минут ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 13:20 |
|
Top 2 with ties (Некорректный результат запроса).Помогите, пожалуйста
|
|||
---|---|---|---|
#18+
o-oи вот у него есть продукт = яблоко, сортов аж 10, из них только у 5ти одинаковая цена. и хочет он вывести 2 любых самых дорогих, но именно яблок. т.е. из 5 сортов по одной и той же цене вывести только 2(первые попавшиеся?). и то же самое для продукта "груша" Хуже. Он хочет получить как минимум первые 2 самые дорогие, причём если есть ещё записи, цена в которых равна цене второй записи - получить и их тоже. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 13:24 |
|
Top 2 with ties (Некорректный результат запроса).Помогите, пожалуйста
|
|||
---|---|---|---|
#18+
а, ну да, тогда все логично: 2 самых дорогих "яблок" со всеми видами-подвидами. --- почему бы не сложить свои 'Продукт 1', 'Продукт 2' хотя бы даже в табличную переменную и прилепить к ним стоки из top 2 with ties через cross apply? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 13:34 |
|
Top 2 with ties (Некорректный результат запроса).Помогите, пожалуйста
|
|||
---|---|---|---|
#18+
myrzilka, похоже на экзамен на знание старых тем на форуме Недавно такую задачу решали. Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 13:36 |
|
Top 2 with ties (Некорректный результат запроса).Помогите, пожалуйста
|
|||
---|---|---|---|
#18+
ошибся слегка, вот так больше похоже: Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 13:40 |
|
Top 2 with ties (Некорректный результат запроса).Помогите, пожалуйста
|
|||
---|---|---|---|
#18+
Похоже, это то, что нужно! Спасибо большое! ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 13:47 |
|
Top 2 with ties (Некорректный результат запроса).Помогите, пожалуйста
|
|||
---|---|---|---|
#18+
и что получается в результате? вот на таких данных получили 3 вида яблок по самой дорогой цене (и где тут топ 2 цен для яблока?) и 2 вида груш (тут ок, 2 цены вышло) Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 13:59 |
|
Top 2 with ties (Некорректный результат запроса).Помогите, пожалуйста
|
|||
---|---|---|---|
#18+
o-oи что получается в результате? вот на таких данных получили 3 вида яблок по самой дорогой цене (и где тут топ 2 цен для яблока?) и 2 вида груш (тут ок, 2 цены вышло) Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
запрос сделан с расчетом на постановку, что нужно получить минимум 2 модели с самыми высокими целями - тогда результат достигнут. Для вашей постановки (все модели с 2 самыми высокими ценами) нужно использовать dense_rank. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 14:07 |
|
Top 2 with ties (Некорректный результат запроса).Помогите, пожалуйста
|
|||
---|---|---|---|
#18+
Minamotoзапрос сделан с расчетом на постановку, что нужно получить минимум 2 модели с самыми высокими целями ценами- тогда результат достигнут. Для вашей постановки (все модели с 2 самыми высокими ценами) нужно использовать dense_rank. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 14:08 |
|
Top 2 with ties (Некорректный результат запроса).Помогите, пожалуйста
|
|||
---|---|---|---|
#18+
у меня при таком запросе вообще у всех одинаковый rank ставится и выводятся все значения. Поясню еще раз, что нужно. Есть яблоки, груши, помидоры... у них могут быть виды - красное, белое, зеленое. У каждого вида своя цена. Яблок и груш n- ное количество. Надой найти top 2 тех овощей или фруктов, у которых сумма со всеми подвидами наибольшая. Но при этом в результате запросам надо получить такие столбцы N Фрукт/Овощ Вид Кол-во 1 Яблоки Красное 45 2 Груши Белое 41 3 Яблоки Зеленое 14 4 Помидоры Красное 13 Но в данном случае получаем не совсем правильную сортировку, т.к. Яблоки считаются два раза (из-за того, что мы выводим и виды тоже). Не знаю, может вообще так нельзя сделать... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 14:10 |
|
Top 2 with ties (Некорректный результат запроса).Помогите, пожалуйста
|
|||
---|---|---|---|
#18+
myrzilkaу меня при таком запросе вообще у всех одинаковый rank ставится и выводятся все значения. Поясню еще раз, что нужно. Есть яблоки, груши, помидоры... у них могут быть виды - красное, белое, зеленое. У каждого вида своя цена. Яблок и груш n- ное количество. Надой найти top 2 тех овощей или фруктов, у которых сумма со всеми подвидами наибольшая. Но при этом в результате запросам надо получить такие столбцы N Фрукт/Овощ Вид Кол-во 1 Яблоки Красное 45 2 Груши Белое 41 3 Яблоки Зеленое 14 4 Помидоры Красное 13 Но в данном случае получаем не совсем правильную сортировку, т.к. Яблоки считаются два раза (из-за того, что мы выводим и виды тоже). Не знаю, может вообще так нельзя сделать... Мда, понятнее не стало. Дайте первоначальное наполнение - приведите код создания и заполнения тестовых таблиц, и определение, что вы понимаете под "суммой с подвидами". А то в запросе у вас только цена фигурирует, а в этом объяснении внезапно количество появляется. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 14:15 |
|
Top 2 with ties (Некорректный результат запроса).Помогите, пожалуйста
|
|||
---|---|---|---|
#18+
из его постановки задачи конечно вообще непонятно, что надо. но слова минимум там точно нет. меня просто удивила неконсистентность результата в том плане, что для одного продукта вываливает всего 1 цену, для второго две. с вашей формулировкой конечно понятнее ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 14:16 |
|
Top 2 with ties (Некорректный результат запроса).Помогите, пожалуйста
|
|||
---|---|---|---|
#18+
myrzilkaНадой найти top 2 тех овощей или фруктов, у которых сумма со всеми подвидами наибольшая. теперь уже сумма вылезла. а где же она считается в первом посте? да вообще по-моему впервые появилась ближе к концу обсуждения... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 14:18 |
|
Top 2 with ties (Некорректный результат запроса).Помогите, пожалуйста
|
|||
---|---|---|---|
#18+
o-o, сумма - имеется ввиду "Количество". Яблоки должны быть в top, потому что в сумме их больше всех - 59, а сейчас выводятся груши в топ. rank Фрукт/Овощ Вид Кол-во 1 Груши Белое 50 2 Яблоки Красное 45 3 Яблоки Зеленое 14 4 Помидоры Красное 13 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 14:25 |
|
Top 2 with ties (Некорректный результат запроса).Помогите, пожалуйста
|
|||
---|---|---|---|
#18+
час от часу не легче. сперва в запросе была цена, потом она ушла и не вернулась. зато вылезло Количество, а где оно в первоначальном запросе? авторсумма - имеется ввиду "Количество". Яблоки должны быть в top, потому что в сумме их больше всех - 59 так все-таки сумма есть? или я чего-то не вижу строку с Количество = 59. зато вижу 45 + 14!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 14:30 |
|
Top 2 with ties (Некорректный результат запроса).Помогите, пожалуйста
|
|||
---|---|---|---|
#18+
o-o, да, я имею виду именно 45-14 :) (простите за сумбурность). Вопрос - можно ли как-то присвоить Яблокам одинаковый Rank ? Чтобы, когда я напишу в итоге вывести значения, у которых Rank >= 2 , то отобралось бы 3 строки - Груши и два Яблока. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 14:36 |
|
Top 2 with ties (Некорректный результат запроса).Помогите, пожалуйста
|
|||
---|---|---|---|
#18+
myrzilka, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 14:52 |
|
Top 2 with ties (Некорректный результат запроса).Помогите, пожалуйста
|
|||
---|---|---|---|
#18+
myrzilka, это, что ли, хотите? Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 14:54 |
|
Top 2 with ties (Некорректный результат запроса).Помогите, пожалуйста
|
|||
---|---|---|---|
#18+
Minamotomyrzilka, это, что ли, хотите? Код: sql 1. 2. 3. 4.
Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 14:55 |
|
Top 2 with ties (Некорректный результат запроса).Помогите, пожалуйста
|
|||
---|---|---|---|
#18+
Minamoto, нет, мне надо подобрать функцию типа rank, dense_rank или что-то типа того, или сгруппировать как-то, чтобы запрос нумеровал Яблоки одинаковым порядковым номером. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 16:46 |
|
Top 2 with ties (Некорректный результат запроса).Помогите, пожалуйста
|
|||
---|---|---|---|
#18+
myrzilka, это невозможно прямым запросом без подзапросов, т.к. вам нужно применить агрегат (сортировка) над агрегатом (суммой по категории). Это можно сделать либо подзапросом (в подзапросе вычисляется один агрегат, над ним выполняется другой), либо селф-джойном (джойн с результатом группировки). Первый вариант вам привел invm (только развернув подзапросы в CTE - там, кстати, есть dense_rank), второй - я. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 17:23 |
|
|
start [/forum/topic.php?all=1&fid=46&tid=1690998]: |
0ms |
get settings: |
12ms |
get forum list: |
16ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
409ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
1ms |
others: | 297ms |
total: | 825ms |
0 / 0 |