|
Как в запросе оперировать с суммой, вычислемой в самом запросе?
|
|||
---|---|---|---|
#18+
В общем из таблицы Код: plaintext 1. 2. 3.
делается такой запрос: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
каждый проект хранится в 4 директориях (bigsan0,1,2,3)- в таблице выводится размер каждой и в последней колонке сумма Всё работает прелестно ... НО пользователям захотелось, чтобы - была сортировка по TOTAL; - чтобы можно было выводить только те проекты, где TOTAL к примеру более 50Gb. Сортировка не получается: GROUP BY TOTAL GROUP BY sum (SIZE) Error: aggregate functions are not allowed in the GROUP BY clause ORDER BY TOTAL ORDER BY sum (SIZE) выдаёт только последний проект GROUP BY sum (SIZE) TOTAL ORDER BY sum (SIZE) TOTAL Error: near "TOTAL": syntax error Обрезание тоже не выходит: AND TOTAL>50000000 AND sum (SIZE) > 50000000 Error: misuse of aggregate: sum() AND sum (SIZE) TOTAL>50000000 Error: near "TOTAL": syntax error __________________________________________________________________________ Учиться на ошибках, особенно чужих, значит сделать свою жизнь скучной. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2010, 15:45 |
|
Как в запросе оперировать с суммой, вычислемой в самом запросе?
|
|||
---|---|---|---|
#18+
HAVING ... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2010, 15:46 |
|
Как в запросе оперировать с суммой, вычислемой в самом запросе?
|
|||
---|---|---|---|
#18+
Ого как оперативно. Спасибо! Для обрезания действительно подошло. А сортировку значит невозможно-таки сделать? __________________________________________________________________________ Учиться на ошибках, особенно чужих, значит сделать свою жизнь скучной. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2010, 15:55 |
|
Как в запросе оперировать с суммой, вычислемой в самом запросе?
|
|||
---|---|---|---|
#18+
И сортировку возможно - с помощью подзапроса: Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2010, 17:42 |
|
Как в запросе оперировать с суммой, вычислемой в самом запросе?
|
|||
---|---|---|---|
#18+
Сортировку надо всегда делать на клиенте. Ну нарисовал ты юзеру табличку на экране отсортированую по Total, а юзеру захотелось обратно отстортировать, по имени проекта. Ты будешь переписывать запрос и снова посылать его в базу будешь? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2010, 17:47 |
|
Как в запросе оперировать с суммой, вычислемой в самом запросе?
|
|||
---|---|---|---|
#18+
White OwlСортировку надо всегда делать на клиенте. Вопиюще неверное утверждение. White Owl Ну нарисовал ты юзеру табличку на экране отсортированую по Total, а юзеру захотелось обратно отстортировать, по имени проекта. Ты будешь переписывать запрос и снова посылать его в базу будешь? Точно, буду посылать новый запрос. Как пример: Код: plaintext
А вы будете все миллиарды записей на клиента пересылать только для того, чтобы десяток отображаемых можно было отсортировать в другом порядке?.. Пользователи вас расстреляют... и правильно сделают ;-) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2010, 19:13 |
|
Как в запросе оперировать с суммой, вычислемой в самом запросе?
|
|||
---|---|---|---|
#18+
MBGWhite OwlСортировку надо всегда делать на клиенте. Вопиюще неверное утверждение. White Owl Ну нарисовал ты юзеру табличку на экране отсортированую по Total, а юзеру захотелось обратно отстортировать, по имени проекта. Ты будешь переписывать запрос и снова посылать его в базу будешь? Точно, буду посылать новый запрос. Как пример: Код: plaintext
А вы будете все миллиарды записей на клиента пересылать только для того, чтобы десяток отображаемых можно было отсортировать в другом порядке?.. Пользователи вас расстреляют... и правильно сделают ;-)MBG, я вас уважаю, но вы сумасшедший. Какие нафиг миллиарды записей? Если клиент потребовал миллиард записей, значит он не понимает чего ему надо. Никогда, ни при каких условиях, нету смысла пересылать на клиента больше сотни строк. Человек в принципе не в состоянии просмотреть глазами большее количество данных. Редко кто до тридцатой строки дотягивает да и то, только если специально что-то ищет. Группировки, фильтры, различные аггрегаты, многоуровневая детализация - да. Но выдавать на клиента больше сотни строк это абсолютная глупость. Ваш запрос Код: plaintext
А если кто-то захочет со мной спорить - откройте наш форум по SQLite и прочитайте (внимательно прочитайте, а не просто увидьте что там что-то написано) все заголовки тем, кто их начал и кто и когда последний в них ответил. Сначала на первой странице, потом на второй странице, потом на третей.... если сможете конечно. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2010, 20:12 |
|
Как в запросе оперировать с суммой, вычислемой в самом запросе?
|
|||
---|---|---|---|
#18+
White OwlГруппировки, фильтры, различные аггрегаты, многоуровневая детализация - да. Но выдавать на клиента больше сотни строк это абсолютная глупость. Ваш запрос Код: plaintext
Пример 1: во всех (или почти всех) корпоративных системах существует требование выгрузки всех отчетов в установленной форме, после чего их печатают, подписывают и отправляют в архив. Отчеты обычно выгружаются в эксель, по 65 000 строк на лист, десятки листов... Пример 2: постраничное листание выборки. К примеру, в биллинге на одной АТС могут быть сотни портов, в документообороте - у одного партнера могут быть сотни заявок в сутки и т.п. Бывают и выборки (да, уже агрегированные) на десятки тысяч записей, скажем, квартальный отчет одного из операторов сотовой связи по дилерам - и именно в таком виде этот отчет сдается из макрорегионального офиса в российский. И есть такая профессия - аналитик, который получает деньги именно за работу с подобными данными. Даже спам, случается, приходит - за определенную таксу составим список 1000 ваших конкурентов по данным популярных поисковиков. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2010, 20:47 |
|
Как в запросе оперировать с суммой, вычислемой в самом запросе?
|
|||
---|---|---|---|
#18+
MBGПример 1: во всех (или почти всех) корпоративных системах существует требование выгрузки всех отчетов в установленной форме, после чего их печатают, подписывают и отправляют в архив. Отчеты обычно выгружаются в эксель, по 65 000 строк на лист, десятки листов...Конечно-конечно, при этом начальник самолично проверяет все листы идущие в архив и ни одна запятая заложенная вороватым бухгалтером не проскочит мимо его внимания. При этом он регулярно занимается пересотрировкой всех 65536 строк на каждом из листов чтобы было удобнее ловить лишние нолики впихнутые туда злоумышленником. А через два года приходит налоговая и начинает проверять все эту гору бумаг заново. Да, я знаю что такая практика существует на самом деле. Только от того что она существует она не перестает быть идиотской и главное не эффективной. MBGПример 2: постраничное листание выборки. К примеру, в биллинге на одной АТС могут быть сотни портов, в документообороте - у одного партнера могут быть сотни заявок в сутки и т.п. Бывают и выборки (да, уже агрегированные) на десятки тысяч записей, скажем, квартальный отчет одного из операторов сотовой связи по дилерам - и именно в таком виде этот отчет сдается из макрорегионального офиса в российский.Есть некоторая разница между выгрузкой данных для отдачи их в другую базу данных и сортировкой этих данных, вы не находите? Процедура репликации данных не требует переменной сортировки. MBGИ есть такая профессия - аналитик, который получает деньги именно за работу с подобными данными. Даже спам, случается, приходит - за определенную таксу составим список 1000 ваших конкурентов по данным популярных поисковиков.Угу. Хорошо, и что я буду делать с этим списком из 1000 моих конкурентов? Мне не нужна тысяча, мне нужен максимум десяток из моих непосредственных конкурентов. Тех кто оперирует в моем регионе, тех кто реально имеет шанс отобрать у меня клиентов. И даже в этом случае мне максимум тройка лидеров будет интересна. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2010, 21:22 |
|
Как в запросе оперировать с суммой, вычислемой в самом запросе?
|
|||
---|---|---|---|
#18+
White Owl Да, я знаю что такая практика существует на самом деле. Только от того что она существует она не перестает быть идиотской и главное не эффективной. Согласен, вот только мне так и не удалось ни в одной системе от постраничного листания избавиться, хотя и поиск и сортировка есть. Мне оно поперек горла, т.к. offset для выборки, мягко говоря, неэффективен, но деваться некуда, пользователю позарез надо - такая уж практика работы с документами. White Owl Угу. Хорошо, и что я буду делать с этим списком из 1000 моих конкурентов? Мне не нужна тысяча, мне нужен максимум десяток из моих непосредственных конкурентов. Тех кто оперирует в моем регионе, тех кто реально имеет шанс отобрать у меня клиентов. И даже в этом случае мне максимум тройка лидеров будет интересна. А мне из конкурентов и вовсе интересны только те, кто на те же тендеры документы подает, а их я знаю и так :-) Но раз спам шлют, значит, услуга востребована и кто-то сидит и листает выдачу поисковиков. Опять же, такая практика... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2010, 21:42 |
|
Как в запросе оперировать с суммой, вычислемой в самом запросе?
|
|||
---|---|---|---|
#18+
MBG! Спасибо! Да, точно, у меня на выходных как раз пришла мысль о встроенном selecte. Просто ни разу такого не применял, поэтому не сразу додумался. White Owl! Вариант про клиента я тоже рассматривал. Я в PHP загоняю данные в массив: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
Но так как я в PHP ещё только начинаю разбираться, то пока не совсем в курсАх как потом оперировать с массивом. А так как пользователям нужно всего две сортировки ... точнее даже так - некоторым пользователям нужна сортировка только по названию, а некоторым только по размеру, то мне легче два php-файла для них разных написать. ___________________________________________________________________________ Учиться на ошибках, особенно чужих, значит сделать свою жизнь скучной. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2010, 11:34 |
|
|
start [/forum/topic.php?fid=54&msg=36558168&tid=2009355]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
77ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
others: | 15ms |
total: | 198ms |
0 / 0 |