|
|
|
sum что не так ?
|
|||
|---|---|---|---|
|
#18+
Добрый день у меня есть запрос Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. хочу чтобы он суммы считал sum(IF (count(*)>=20 , count(*), 0)) а он выдает ошибку Invalid use of group function то есть у меня задача посчитать сумму поданных вагонов до 5 за раз и т.д. группирую по номеру документа, если не выбирать SUM, то появляется таблица где столбцы правильно все формируют а почему в суммы не складывает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2013, 08:15:37 |
|
||
|
sum что не так ?
|
|||
|---|---|---|---|
|
#18+
То, что написано, требует интеративного вычисления групповой функции. Не бывает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2013, 08:54:16 |
|
||
|
sum что не так ?
|
|||
|---|---|---|---|
|
#18+
Так? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2013, 10:25:37 |
|
||
|
sum что не так ?
|
|||
|---|---|---|---|
|
#18+
motorov, а он выдает ошибку Invalid use of group function -- приведи полный текст ошибки. Он должен указывать на место в запросе, где. Akina: То, что написано, требует интеративного вычисления групповой функции. -- где ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2013, 10:26:27 |
|
||
|
sum что не так ?
|
|||
|---|---|---|---|
|
#18+
IF - забавный зверёк. Count() в условии и Count() в варианте выдачи должны считаться отдельно, ибо, несмотря на полное лексическое сходство, они различны. А это уже две итерации расчёта групповой функции, причём набор аргументов при втором расчёте формально зависит от результатов первого расчёта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2013, 10:43:04 |
|
||
|
sum что не так ?
|
|||
|---|---|---|---|
|
#18+
Но вообще запрос весёлый. Считается count(*), который, в зависимости от полученного значения, кладётся в одно из 5 полей, а в остальные 4 кладутся нули. Нахрена такое может понадобиться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2013, 10:55:07 |
|
||
|
sum что не так ?
|
|||
|---|---|---|---|
|
#18+
AkinaНахрена такое может понадобиться?Предполагаю, что для красивого визуального отображения. Если так, то нужно делать на клиенте, а не терзать СУБД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2013, 10:56:37 |
|
||
|
sum что не так ?
|
|||
|---|---|---|---|
|
#18+
AkinaIF - забавный зверёк. Count() в условии и Count() в варианте выдачи должны считаться отдельно, ибо, несмотря на полное лексическое сходство, они различны. А это уже две итерации расчёта групповой функции, причём набор аргументов при втором расчёте формально зависит от результатов первого расчёта.Не так. Запрос ТС (немного отформатирован): Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. имеет право на выполенение, более того, он правильно расположит посчитанные количества сервисов в колонках таблицы (значение count(*) будет посчитано только один раз для каждой строки), например, так: id_servicessum5sum10sum15sum20sum21132931430 motorov , Другое дело, что для подсчета этого количества необходима группировка по сервисам (указанная в запросе - справляется правильно), а для повторного подсчета значений во всех сформированных колонках необходима вторая группировка , неявная. Ошибка в том, что писать SUM(COUNT(*)) нельзя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2013, 11:09:49 |
|
||
|
sum что не так ?
|
|||
|---|---|---|---|
|
#18+
AkinaIF - забавный зверёк. Count() в условии и Count() в варианте выдачи должны считаться отдельно, ибо, несмотря на полное лексическое сходство, они различны. А это уже две итерации расчёта групповой функции, причём набор аргументов при втором расчёте формально зависит от результатов первого расчёта. Тогда это нужно просто тупо переписать через CASE. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2013, 11:56:49 |
|
||
|
sum что не так ?
|
|||
|---|---|---|---|
|
#18+
Cygapb-007 Ошибка в том, что писать SUM(COUNT(*)) нельзя. Ну, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2013, 11:59:55 |
|
||
|
sum что не так ?
|
|||
|---|---|---|---|
|
#18+
Да спасибо, за варианты решения, я пока делал суммирование на стороне клиента, только задачу понял не правильно тут задача даже интереснее есть записи, в которых есть дата и время, например 1)dt_fact='2013-09-05 10:50:00' 2)dt_fact='2013-09-02 11:35:00' 3)dt_fact='2013-09-02 11:30:00' 4)dt_fact='2013-09-05 10:30:00' 5)dt_fact='2013-09-05 10:30:00' 6)dt_fact='2013-09-02 11:30:00' 7)dt_fact='2013-09-01 10:30:00' каждая запись это вагон мне нужно, как то сгруппировать их по условию, если дата и время у группы одинаково+- 10 мин то это одна ходка и надо посчитать количество ходок тут получается 1 - это первая ходка 2,3,6 - вторая ходка 4,5 - третья ходка 7 четвертая и результат , - что было 4 ходки за месяц Можно ли это сделать в одном запросе? Если время и дата была одинаковой было бы проще, но оно может на 10 мин отличаться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2013, 15:43:18 |
|
||
|
sum что не так ?
|
|||
|---|---|---|---|
|
#18+
motorovесли дата и время у группы одинаково+- 10 мин то это одна ходка Бред. 15 групп, одна за другой, каждую минуту - это сколько "ходок"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2013, 16:27:02 |
|
||
|
sum что не так ?
|
|||
|---|---|---|---|
|
#18+
запрос такой Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. результат такой из него мне нужно найти количество, по условию описанному выше ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2013, 16:47:13 |
|
||
|
sum что не так ?
|
|||
|---|---|---|---|
|
#18+
AkinaБред. 15 групп, одна за другой, каждую минуту - это сколько "ходок"? Это железная дорога)) Если были 15 записей одна за другой в промежутке 10 мин - это одна ходка Физически смысл, локомотив едет и в одну сторону и сколько вагонов зацепил и обратно едет тоже с вагонами и если это в течении 10 мин , то эта работа локомотива одна ходка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2013, 16:50:37 |
|
||
|
sum что не так ?
|
|||
|---|---|---|---|
|
#18+
результат без сортировки в примере ее сразу не добавил на стороне клиента -это делаю вложенным циклом, но как тут это сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2013, 16:53:09 |
|
||
|
sum что не так ?
|
|||
|---|---|---|---|
|
#18+
motorovДа спасибо, за варианты решения, я пока делал суммирование на стороне клиента, только задачу понял не правильно тут задача даже интереснее есть записи, в которых есть дата и время, например 1)dt_fact='2013-09-05 10:50:00' 2)dt_fact='2013-09-02 11:35:00' 3)dt_fact='2013-09-02 11:30:00' 4)dt_fact='2013-09-05 10:30:00' 5)dt_fact='2013-09-05 10:30:00' 6)dt_fact='2013-09-02 11:30:00' 7)dt_fact='2013-09-01 10:30:00' каждая запись это вагон мне нужно, как то сгруппировать их по условию, если дата и время у группы одинаково+- 10 мин то это одна ходка и надо посчитать количество ходок тут получается 1 - это первая ходка 2,3,6 - вторая ходка 4,5 - третья ходка 7 четвертая и результат , - что было 4 ходки за месяц Можно ли это сделать в одном запросе? Если время и дата была одинаковой было бы проще, но оно может на 10 мин отличаться уточните, сколько ходок будет в каждом случае, даны только минуты: 1,11,21 - ? 1,10,11,12 - ? 1,9,10,11 - ? 1,11,12,13 - ? 1,2,3,12,13 - ? 1,2,3,13,14 - ? 1,2,3,14,15 - ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2013, 18:30:36 |
|
||
|
sum что не так ?
|
|||
|---|---|---|---|
|
#18+
javajdbcуточните, сколько ходок будет в каждом случае, даны только минуты: 1,11,21 - ? 1,10,11,12 - ? 1,9,10,11 - ? 1,11,12,13 - ? 1,2,3,12,13 - ? 1,2,3,13,14 - ? 1,2,3,14,15 - ? Добрый день не совсем понял сделаю пример из таблицы-картинки которая выше там вагон 59718858 - это одна ходка вагоны 56942808,53452728, 53733440,52765849,52669223 - это вторая ходка(так как их время в диапазоне 10 мин у первых 4 равно у пятого на 10 мин больше) и остальные по одной ходке в итоге 6 ходок сделал локомотив сейчас в php стелал такой код: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. считает количество ходок, и в зависимости сколько в ходке было вагонов, записывает в соответствующую переменную. Не знаю может так проще сделать, просто пытаюсь изучить какие можно sql запросы делать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2013, 18:39:27 |
|
||
|
sum что не так ?
|
|||
|---|---|---|---|
|
#18+
motorov, ваш пример понятен. Я привел другие примеры и прошу выдать конечный результат, Напромер: если для какого-то вагона есть записи на первой, второй, 3, 12,13-ой минутах, сколько ходок это будет? 1,2,3,12,13 - ? Точно также оттветте пожалуйста и на остальные мои примеры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2013, 19:12:45 |
|
||
|
sum что не так ?
|
|||
|---|---|---|---|
|
#18+
javajdbcmotorov, ваш пример понятен. Я привел другие примеры и прошу выдать конечный результат, Напромер: если для какого-то вагона есть записи на первой, второй, 3, 12,13-ой минутах, сколько ходок это будет? 1,2,3,12,13 - ? Точно также оттветте пожалуйста и на остальные мои примеры. Для одного вагона это исключено чтобы были записи через несколько минут программа ведет учет когда вагон подан и когда убран два раза подан он не может, в общем если откинуть номер вагона . то (1,2,3) - это одна ходка (12,13) - вторая хотя нет у меня программа посчитает одной если вы имеете ввиду что между 3 и 12 тоже диапазон подходит но тут считается от начала движения то есть в 1 он поехал, дрын дрын и ... В общим да это будет одна ходка буду еще думать правильно ли это да наверное правильно, просто на практике у них такое не встречал ведь локо зацепил 5 вагонов в одну сторону и время у них одинаковое и 3 в другую и время в диапазоне и получается 8 вагонов в одной ходке ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2013, 19:59:11 |
|
||
|
sum что не так ?
|
|||
|---|---|---|---|
|
#18+
Вы должны сначала отбросить слова "не может быть" - может быть АБСОЛЮТНО ВСЁ. После этого Вы должны построить математически строгий алгоритм разделения набора "групп" на "ходки". Который на ЛЮБОМ наборе "групп" даст ОДНОЗНАЧНЫЙ ответ. А потом приходите - поможем воплотить этот алгоритм в коде. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2013, 21:28:45 |
|
||
|
sum что не так ?
|
|||
|---|---|---|---|
|
#18+
AkinaВы должны сначала отбросить слова "не может быть" - может быть АБСОЛЮТНО ВСЁ.Akina, ну это уже перебор. Пусть ТС задаёт условия, которым удовлетворяют данные, но он должен чётко понимать, что если запрос написан в расчёте на их, условий, выполнение, а данные когда-нибудь перестанут им удовлетворять, то такой запрос может выдать (и выдаст!) чушь. AkinaПосле этого Вы должны построить математически строгий алгоритм разделения набора "групп" на "ходки". Который на ЛЮБОМ наборе "групп" даст ОДНОЗНАЧНЫЙ ответ.на любом допустимом наборе и пусть потом не говорит, что его не предупреждали :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2013, 06:57:15 |
|
||
|
sum что не так ?
|
|||
|---|---|---|---|
|
#18+
AkinaВы должны сначала отбросить слова "не может быть" - может быть АБСОЛЮТНО ВСЁ. После этого Вы должны построить математически строгий алгоритм разделения набора "групп" на "ходки". Который на ЛЮБОМ наборе "групп" даст ОДНОЗНАЧНЫЙ ответ. А потом приходите - поможем воплотить этот алгоритм в коде. Я вас понял, просто ТЗ как такового нет и есть желания заказчики и есть их методы расчета на листочках по этому и мое часто недопонимание Сейчас оставил так как в php коде выше, он берет и идет циклом от начала записей и сравнивает даты если разница не привышает 10 мин, он их в туже ходку добавляет. и считает количество вагонов в ходке ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2013, 07:46:20 |
|
||
|
sum что не так ?
|
|||
|---|---|---|---|
|
#18+
motorov , я уже понимаю, что это коммерческая задача. А потому - если вы не сделаете настоящее ТЗ, геморрой в будущем обеспечен. То не так, это доделай, вон того нехватает, а это не так считается... оно тебе надо? tanglirна любом допустимом наборе[/quot]Проверка на допустимость - это часть алгоритма. ИМХО. motorovСейчас оставил так как в php коде выше, он берет и идет циклом от начала записей и сравнивает даты если разница не привышает 10 мин, он их в туже ходку добавляет и считает количество вагонов в ходке Нарвётесь. Алгоритм, приняв неоднозначные данные, может дать неверные результаты. И я знаю, кого за это будут макать мордой в песок... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2013, 08:44:44 |
|
||
|
sum что не так ?
|
|||
|---|---|---|---|
|
#18+
motorovно тут считается от начала движения то есть в 1 он поехал, дрын дрын и ...а с чего вы взяли, что "в 1 он поехал"? почему именно этот момент - "начало движения"? может, он поехал в "-9", и тогда момент "3" уже брать не надо... или надо? motorovВ общим да это будет одна ходкав лоб: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2013, 10:32:18 |
|
||
|
sum что не так ?
|
|||
|---|---|---|---|
|
#18+
tanglirmotorovно тут считается от начала движения то есть в 1 он поехал, дрын дрын и ...а с чего вы взяли, что "в 1 он поехал"? почему именно этот момент - "начало движения"? может, он поехал в "-9", и тогда момент "3" уже брать не надо... или надо? motorovВ общим да это будет одна ходкав лоб: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Да спасибо я попробую А условия правильные такие. В одну ходку попадают все записи в течении 10 мин начиная с первой допустим минуты 1 2 3 9 12 13 тут 1 2 3 9 одна ходка, 10 мин считается с 1 затем 12 уже не на удовл. условию, начинает считаться вторая ходка от 12 сделал подсчет в программе на данный момент ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2013, 17:20:19 |
|
||
|
|

start [/forum/topic.php?fid=47&fpage=204&tid=1835897]: |
0ms |
get settings: |
4ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
22ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 190ms |
| total: | 292ms |

| 0 / 0 |
