|
Group by
|
|||
---|---|---|---|
#18+
Доброго времени суток уважаемые. есть запрос с группировкой. Как можно группировать, что бы в group by не прописывать снова то же что и в select ? Код: 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. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 12:56 |
|
Group by
|
|||
---|---|---|---|
#18+
Вижу пару вариантов: 1. В подзапрос добавьте расчет один раз, группировку на уровень выше; 2. Создать функцию, которая будет возвращать Вам значение по входной переменной, тогда не будет так громоздко. Но что бы посоветовал, это вчитать в запрос и понять что там происходит. Можно и покороче все написать. Например, вот эта часть не имеет смысла вовсе: Код: plsql 1.
Еще посмотрите в сторону EXTRACT функции. Никакого смысла переводить дату в строку, а потом опять в дату в Вашем случае нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 14:46 |
|
Group by
|
|||
---|---|---|---|
#18+
kvitnitskiy Код: plsql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 15:01 |
|
Group by
|
|||
---|---|---|---|
#18+
kvitnitskiy, with/подзапрос group by "CalAppptShift",... ps вопрос достаточно часто всплывает, почему б не сделать как в order by ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 15:51 |
|
Group by
|
|||
---|---|---|---|
#18+
oragraf, ЧТо не так ? мне к дате надо "приклеить" 08:00:00 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 16:07 |
|
Group by
|
|||
---|---|---|---|
#18+
MakeSure, авторНапример, вот эта часть не имеет смысла вовсе: Почему ? мне надо что бы датавремя которое идет с 20:00 до 08:00 возвращало как одну дату ( до 00:00) и это работает. рабоачая смена длится 08:00 - 20:00 20:00 -08:00 , мне в двльнейшем нужна групп ировка данных по сменам как раз. и этот вариант прекрасно работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 16:13 |
|
Group by
|
|||
---|---|---|---|
#18+
MakeSure, за авторЕще посмотрите в сторону EXTRACT спасибо. Хотя не понятно как раотает. в хепе пишет что авторЕсли же я напишу так: year_month - то будет извлечен год и месяц (слитно, без разделителя). на практике же получаю ошибку [Err] ORA-00907: missing right parenthesis Код: plsql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 16:19 |
|
Group by
|
|||
---|---|---|---|
#18+
kvitnitskiy Почему ? что надо понятно o.APPT_DATE <= to_date(CONCAT(TO_CHAR(o.APPT_DATE + 1 , 'DD.MM.YY'), ' 08:00:00'), 'DD.MM.YY hh24:mi:ss') всегда True Код: 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. 25. 26. 27.
.... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 16:22 |
|
Group by
|
|||
---|---|---|---|
#18+
upd: выше уже ответили :) kvitnitskiy, Посмотрим на этот кейс: Код: plsql 1. 2.
Первое условие по смыслу правильное (хотя разберитесь куда должны входить 20:00 - в первый кейс или во второй). И это условие нам говорит, если o.APPT_DATE больше либо равно 20:00 того же дня. Второе условие пытается наложить дополнительное ограничение: * o.APPT_DATE должно быть меньше чем 8 утра следующего за этим же o.APPT_DATE днем. Как бы не вертели математику, но: x < x+1 , поэтому смысла никакого в этом условии нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 16:28 |
|
Group by
|
|||
---|---|---|---|
#18+
Тем не менее это рабоатет ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 16:31 |
|
Group by
|
|||
---|---|---|---|
#18+
MakeSure upd: выше уже ответили :) (хотя разберитесь куда должны входить 20:00 - в первый кейс или во второй). Да это я тупанул, спасибо за замечание . ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 16:44 |
|
Group by
|
|||
---|---|---|---|
#18+
Stax Код: plsql 1. 2.
Код: plsql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 13:39 |
|
|
start [/forum/topic.php?fid=52&msg=39964022&tid=1881203]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
135ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 17ms |
total: | 243ms |
0 / 0 |