|
|
|
Самый популярное ( с весами ) значение атрибута
|
|||
|---|---|---|---|
|
#18+
Есть табличка, в которое есть поля code - код товара, скажем ( первичный ключ ) , part - некий разрез, quantity - количество товара, и куча полей атрибутов. Для примера создадим табличку с тремя атрибутами: Код: plsql 1. Заполним например такими данными: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. Необходимо для каждой части из part найти самое популярное значение каждого атрибута с учетом количества. Скажем, для part = 1 и атрибута attr1 у нас два возможных значения - 'a' и 'b' . Для 'a' - суммарное количество 7 ( 3+4), для 'b' - 5. Стало быть самый популярное значение attr1 в данном разрезе - 'a'. А вот у attr2 значение 'b' дает сумму 9 ( 4+5) и поэтому самое популярное. Атрибут null не может быть самым популярным ( в таком случае нужно вывести второй по популярности ). Т.е. правильный ответ для таких данных будет выглядеть вот так: "PART";"ATTR1";"ATTR2";"ATTR3""1";"a";"b";"c""2";"b";"b";"a" Принимаются ваши идеи как это сделать. Сейчас это выглядит как вот такая жесть: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. Выглядит ужасно и работает медленно ( в таблице может быть до 10 000 строк, атрибутов около 50). Думаю переделать на вот такое: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Но возможно кто-то предложит совсем красивый вариант без подзапросов, вдруг есть какой-то хитрый трюк. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2016, 15:46:44 |
|
||
|
Самый популярное ( с весами ) значение атрибута
|
|||
|---|---|---|---|
|
#18+
Valergrad, unpivot + group by ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2016, 16:13:43 |
|
||
|
Самый популярное ( с весами ) значение атрибута
|
|||
|---|---|---|---|
|
#18+
Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2016, 13:31:12 |
|
||
|
|

start [/forum/topic.php?fid=52&fpage=205&tid=1887605]: |
0ms |
get settings: |
4ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
198ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
32ms |
get tp. blocked users: |
1ms |
| others: | 201ms |
| total: | 471ms |

| 0 / 0 |
