Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
28.07.2016, 19:43
|
|||
---|---|---|---|
|
|||
Вложенные группировки. |
|||
#18+
Есть таблица: Create Table xxx( Id Integer not null primary key, /* Ключ * / HZ integer, /* Высота в метрах */ V real, /* Скорость ветра */ ADate Char, /* Дата в виде, например '2016.03.26' */ AYear Integer, /* В данном случае 2016 */ AMon Integer, /* В данном случае 3 */ ADay Integer, /* В данном случае 26 */ ...... Как правило, скорость ветра возрастает с высотой. Требуется определить среднюю толщину приземного слоя, где скорость ветра не больше, ну, скажем, 2 м/с, помесячно. Составил вот такой запрос: SELECT MAX(HZ),ADate FROM xxx WHERE V<=2 GROUP BY ADate А вот теперь бы результаты этого запроса усреднить и сгруппировать по месяцам. Но как это сделать, ума не приложу. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.07.2016, 20:37
|
|||
---|---|---|---|
Вложенные группировки. |
|||
#18+
Massaraksh, Группировать можно не только по полю, но и по результату функции. А если у тебя дата в формате YYYY.MM.DD, то самое простое - использовать substr() ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.07.2016, 20:46
|
|||
---|---|---|---|
|
|||
Вложенные группировки. |
|||
#18+
White Owl, Спасибо, уже разобрался: SELECT AVG(s1.f1),s1.f3 FROM (SELECT MAX(HZ) as f1,ADate as f2,AMon as f3 FROM r_sodar AS s2 WHERE Round(V,2)<=2 GROUP BY f2,f3) AS s1 GROUP BY s1.f3 ... |
|||
:
Нравится:
Не нравится:
|
|||
|
29.07.2016, 10:22
|
|||
---|---|---|---|
|
|||
Вложенные группировки. |
|||
#18+
Нет, неправильно. Может быть превышение 2 м/с на определённой высоте, а затем снова <2 м/с, в этом случае MAX(HZ) даст неверное значение. Ладно, буду думать дальше. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
29.07.2016, 11:54
|
|||
---|---|---|---|
|
|||
Вложенные группировки. |
|||
#18+
Всё, определился: SELECT MIN(HZ),ADate FROM r_sodar WHERE V>2 GROUP BY ADate Ну, и соответственно: SELECT AVG(s1.f1),s1.f3 FROM (SELECT MIN(HZ) as f1,ADate as f2,AMon as f3 FROM r_sodar AS s2 WHERE Round(V,2)>2 GROUP BY f2,f3) AS s1 GROUP BY s1.f3 ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=54&mobile=1&tid=2008582]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
29ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 273ms |
total: | 393ms |
0 / 0 |