|
|
|
Агрегирование агрегированного
|
|||
|---|---|---|---|
|
#18+
Попалось на глаза: вывести TOP-10 товара, количество которого больше всего. Родил Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. select @@version Adaptive Server Enterprise/15.0.2/EBF 14332/P/NT (IX86)/Windows 2000/ase1502/2486/32-bit/OPT/Thu May 24 04:10:36 2007 такое (а именно: top && order by в подзапросе) - не осилил (впрочем, как и MySQL 5.1.41). А, вот, FB-2.1.3.18185 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. _________________ "Helo, word!" - 17 errors 56 warnings Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2010, 01:15 |
|
||
|
Агрегирование агрегированного
|
|||
|---|---|---|---|
|
#18+
А тем обычные TOP N запросы не устроили? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. В принципе, можно и на "голом" ANSI-SQL реализовать, без всяких там серверозависимых конструкций. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2010, 06:52 |
|
||
|
Агрегирование агрегированного
|
|||
|---|---|---|---|
|
#18+
Добрый Э - Эх А тем обычные TOP N запросы не устроили? Поясню на пальцах. Допустим, у Вас на складе: Id Name Cnt1 Игрушка "Дед Мороз" 3002 Ель живая 3003 Гирлянда елочная 50 И Вам необходимо выбрать TOP(1). TOP(1)=300. Соответственно в результате выборки Вы должны получить: Id Name Cnt1 Игрушка "Дед Мороз" 3002 Ель живая 300 т.е. - 2-ве записи. В Вашем же варианте Вы получите только одну запись, к примеру: Id Name Cnt1 Игрушка "Дед Мороз" 300 Вроде - мелочь. Но если Вы дадите такой ответ по состоянию на 31-е декабря, то 1-го января Вас заставят выкупить все, не попавшие в выборку, и, как следствие, - нереализованные 300 елочек прямо со склада. Добрый Э - Эх В принципе, можно и на "голом" ANSI-SQL реализовать, без всяких там серверозависимых конструкций. Вот за что и боремся ж то... _________________ "Helo, word!" - 17 errors 56 warnings Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2010, 08:08 |
|
||
|
Агрегирование агрегированного
|
|||
|---|---|---|---|
|
#18+
А все обязательно необходимо сделать в рамках одного запроса? А если разделить? Сначала определить топ-10 "максимальных количеств", а вторым запросом выбрать все записи с таким количеством (как вариант - через временную таблицу)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2010, 08:26 |
|
||
|
Агрегирование агрегированного
|
|||
|---|---|---|---|
|
#18+
Ex_Soft , всё что нужно - перенести подзапрос из секции HAVING в секцию JOIN. Уж декартово произведение таблиц все сервера поддерживают, группировку тоже. Поэтому не вижу никаких сложностей написать запрос в виде: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2010, 08:43 |
|
||
|
Агрегирование агрегированного
|
|||
|---|---|---|---|
|
#18+
Причем, для произвольного N запрос "TOP N " будет иметь немного другой вид: Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2010, 09:00 |
|
||
|
Агрегирование агрегированного
|
|||
|---|---|---|---|
|
#18+
Пардон, в предыдущем сообщении небольшая недоработка. Вот так оно должно быть правильнее: Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2010, 09:07 |
|
||
|
Агрегирование агрегированного
|
|||
|---|---|---|---|
|
#18+
Добрый Э - Эх Код: plaintext 1. 2. 3. 4. 5. 6. 7. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Отсюда: TOP-1 IDCNT39000 TOP-2 IDCNT390002500045000 TOP-3 IDCNT3900025000450005110 _________________ "Helo, word!" - 17 errors 56 warnings Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2010, 11:49 |
|
||
|
Агрегирование агрегированного
|
|||
|---|---|---|---|
|
#18+
Ex_Soft Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. И какие сложности? Код: plaintext 1. 2. 3. 4. 5. 6. 7. Оно, конечно, тоже из "ректальной медицины", но зато на "чистом ANSI", будь он неладен... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2010, 12:19 |
|
||
|
|

start [/forum/topic.php?fid=55&fpage=31&tid=2010779]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
39ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 238ms |
| total: | 377ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...