|
|
|
Как в SQL сгруппировать значения с определенным шагом?
|
|||
|---|---|---|---|
|
#18+
Например, есть таблица Возраст Кол-во1810181520522103114346 1.Как в SQL сделать группировку по возрасту, например, с шагом 5? Возраст Кол-во15-202520-251530-351435-406 2. Как сделать группировку по возрасту, например, различными шагами? Т.е. до 18 лет, с 18 до 25, с 25 до 45 и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2019, 00:02 |
|
||
|
Как в SQL сгруппировать значения с определенным шагом?
|
|||
|---|---|---|---|
|
#18+
Marisolka, Сделайте новую колонку в запросе с помощью Case и назовите её AgeGroup. PS : должно по идее быть в любом курсе по SQL... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2019, 00:31 |
|
||
|
Как в SQL сгруппировать значения с определенным шагом?
|
|||
|---|---|---|---|
|
#18+
MarisolkaТ.е. до 18 лет, с 18 до 25, с 25 до 45 и т.д. 1. Round(Кол-во/5,0) 2. "и т.д." в данном конкретном случае не работает. Ряд логически не продолжается. А так - Case. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2019, 04:18 |
|
||
|
Как в SQL сгруппировать значения с определенным шагом?
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2019, 04:43 |
|
||
|
Как в SQL сгруппировать значения с определенным шагом?
|
|||
|---|---|---|---|
|
#18+
То-же метод, но Case проще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2019, 05:26 |
|
||
|
Как в SQL сгруппировать значения с определенным шагом?
|
|||
|---|---|---|---|
|
#18+
+ вместо null я ставлю 999 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2019, 05:28 |
|
||
|
Как в SQL сгруппировать значения с определенным шагом?
|
|||
|---|---|---|---|
|
#18+
MarisolkaКак сделать группировку по возрасту, например, различными шагами? Т.е. до 18 лет, с 18 до 25, с 25 до 45 и т.д. Самое разумное - завести таблицу с диапазонами возрастов (идНабора-возрастОт-возрастДо), и использовать ее как источник данных для группировки. В ней можно хранить неограниченное количество наборов - и равномерных. и кастомных... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2019, 08:20 |
|
||
|
Как в SQL сгруппировать значения с определенным шагом?
|
|||
|---|---|---|---|
|
#18+
Marisolka, Если возраст целочисленный, то начало периода будет Возраст / 5 * 5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2019, 09:13 |
|
||
|
Как в SQL сгруппировать значения с определенным шагом?
|
|||
|---|---|---|---|
|
#18+
Marisolka, Код: sql 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2019, 10:44 |
|
||
|
Как в SQL сгруппировать значения с определенным шагом?
|
|||
|---|---|---|---|
|
#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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2019, 10:54 |
|
||
|
Как в SQL сгруппировать значения с определенным шагом?
|
|||
|---|---|---|---|
|
#18+
Решение с таблицей групп возрастов наилучшее, т.к. является data-driven, а не code-driven. Оптимальным для реляционных баз является решение, при котором результат запроса зависит от данных, а не от кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2019, 13:50 |
|
||
|
Как в SQL сгруппировать значения с определенным шагом?
|
|||
|---|---|---|---|
|
#18+
Marisolka, посмотрите на этом форуме темы "гистограмма", там есть варианты решения вашей задачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2019, 22:56 |
|
||
|
Как в SQL сгруппировать значения с определенным шагом?
|
|||
|---|---|---|---|
|
#18+
Владислав КолосовРешение с таблицей групп возрастов наилучшее, т.к. является data-driven, а не code-driven. Оптимальным для реляционных баз является решение, при котором результат запроса зависит от данных, а не от кода. Оно конечно в теории верно, но на практике зачастую подобную задачу приходится решать в некой системе отчетности, где заведение и хранение таблиц не предусмотрено, а к рабочей базе доступ только на чтение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2019, 13:05 |
|
||
|
Как в SQL сгруппировать значения с определенным шагом?
|
|||
|---|---|---|---|
|
#18+
982183, в случае изменения диапазона возрастов, например, придется переписывать и публиковать код. Такой подход популярен, но это не pro. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2019, 13:17 |
|
||
|
Как в SQL сгруппировать значения с определенным шагом?
|
|||
|---|---|---|---|
|
#18+
А в альтернативе надо создавать интерфейс ввода таблиц, их контроля права доступа к ним. Зачастую оно того не стоит. А современные пользователи откорректировать правильно составленный код вполне в состоянии. И многие "конструкторы отчетов" это замечательно позволяют делать. Хотя конечно способ с таблицей более "прогрессивен" и правилен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2019, 13:46 |
|
||
|
Как в SQL сгруппировать значения с определенным шагом?
|
|||
|---|---|---|---|
|
#18+
982183А в альтернативе надо создавать интерфейс ввода таблиц, их контроля права доступа к ним.Не обязательно, если коррекция справочника предполагается раз в несколько месяцев/лет. Но разработчикам будет проще править такой справочник, чем искать место, где, например, "Если возраст целочисленный, то начало периода будет Возраст / 5 * 5", а потом, если возникнет потребность изменить диапазон, впендюривать туда сложную формулу в CASE, по инерции. Притом, что очень плохо, таких мест будет несколько (разные отчёты, интерфейсы), и, конечно, никто не булдет понимать ,что из этого используется, а что нет, поэтому придётся править и те 90% запросов, которые не используются. В общем, что бы не делать справочник, нужно очень веское обоснование. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2019, 14:41 |
|
||
|
Как в SQL сгруппировать значения с определенным шагом?
|
|||
|---|---|---|---|
|
#18+
Обычно такого рода таблицы находятся в зоне ответственности группы эксплуатации. По если ПО пишется для мелкоофисной работы, то создается интерфейс. Существуют еще и аналитические системы, но там другой случай, т.к. активно используется парадигма функционального программирования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2019, 14:56 |
|
||
|
Как в SQL сгруппировать значения с определенным шагом?
|
|||
|---|---|---|---|
|
#18+
"Группа эксплуатации" - это одно, а рисовальщики отчетов - совсем другое. И не всегда у них есть соответствующие права и полномочия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2019, 16:22 |
|
||
|
Как в SQL сгруппировать значения с определенным шагом?
|
|||
|---|---|---|---|
|
#18+
alexeyvg982183А в альтернативе надо создавать интерфейс ввода таблиц, их контроля права доступа к ним.Не обязательно, если коррекция справочника предполагается раз в несколько месяцев/лет. Но разработчикам будет проще править такой справочник, чем искать место, где, например, "Если возраст целочисленный, то начало периода будет Возраст / * 5", а потом, если возникнет потребность изменить диапазон, впендюривать туда сложную формулу в CASE, по инерции. Притом, что очень плохо, таких мест будет несколько (разные отчёты, интерфейсы), и, конечно, никто не булдет понимать ,что из этого используется, а что нет, поэтому придётся править и те 90% запросов, которые не используются. В общем, что бы не делать справочник, нужно очень веское обоснование. Вы же понимаете, что вот эту "5", так же можно вынести в соответствующий справочник при необходимости и рулить им? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2019, 17:16 |
|
||
|
Как в SQL сгруппировать значения с определенным шагом?
|
|||
|---|---|---|---|
|
#18+
Кодд со товарищи писал, что все данные должны находиться в таблицах. И вся теория, на основе которой написана математика сервера БД, строится вокруг этого. Поэтому любые отступления снижают производительность запросов. Другое дело, что в народе популярно использовать "против лома нет приёма", т.е. наращивать аппаратную мощь. А поэтому можно халтурить или не знать основные принципы, ишак же везёт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2019, 17:52 |
|
||
|
Как в SQL сгруппировать значения с определенным шагом?
|
|||
|---|---|---|---|
|
#18+
Владислав КолосовПоэтому любые отступления снижают производительность запросов. И вы можете это доказать сравнительными тестами варианта "Возраст / 5 * 5" и варианта "джойн на таблицу диапазонов"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2019, 18:00 |
|
||
|
Как в SQL сгруппировать значения с определенным шагом?
|
|||
|---|---|---|---|
|
#18+
Marisolka2. Как сделать группировку по возрасту, например, различными шагами? Т.е. до 18 лет, с 18 до 25, с 25 до 45 и т.д. Используйте OLAP кубы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2019, 18:38 |
|
||
|
Как в SQL сгруппировать значения с определенным шагом?
|
|||
|---|---|---|---|
|
#18+
msLexalexeyvgВ общем, что бы не делать справочник, нужно очень веское обоснование. Вы же понимаете, что вот эту "5", так же можно вынести в соответствующий справочник при необходимости и рулить им?Формулу в справочник, и потом динамически строить запросы? Понимаю, но мне этот вариант кажется ещё ужаснее, я его не рассматривал всерьёз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2019, 19:04 |
|
||
|
Как в SQL сгруппировать значения с определенным шагом?
|
|||
|---|---|---|---|
|
#18+
alexeyvgmsLexпропущено... Вы же понимаете, что вот эту "5", так же можно вынести в соответствующий справочник при необходимости и рулить им?Формулу в справочник, и потом динамически строить запросы? Понимаю, но мне этот вариант кажется ещё ужаснее, я его не рассматривал всерьёз. Зачем формулу, просто "шаг" группировки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2019, 19:15 |
|
||
|
Как в SQL сгруппировать значения с определенным шагом?
|
|||
|---|---|---|---|
|
#18+
msLexalexeyvgпропущено... Формулу в справочник, и потом динамически строить запросы? Понимаю, но мне этот вариант кажется ещё ужаснее, я его не рассматривал всерьёз. Зачем формулу, просто "шаг" группировкиШаг не имеет смысла, по тем причинам, которые я описал в посте, на который вы ответили. Я же писал не про "куда засунуть цифру 5", а про то, что плохо раскидывать по приложению множество одинаковых формул, для одного и того же расчёта, их будет трудно читать, потом программисты будут их неоптимально менять (иногда слишком усложняя), да ещё и во многих местах. Намного проще сделать справочник групп возрастов. Или хотя бы справочник в коде, как 21996207 - это придётся менять во многих местах, но хотя бы логика будет прозрачная, и в сравнении исходников тоже будет всё прозрачно - что было, и что стало. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2019, 19:59 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=84&tid=1687097]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
48ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
78ms |
get tp. blocked users: |
2ms |
| others: | 214ms |
| total: | 390ms |

| 0 / 0 |
