powered by simpleCommunicator - 2.0.37     © 2025 Programmizd 02
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Вложенные группировки.
5 сообщений из 5, страница 1 из 1
Вложенные группировки.
    #39282201
Massaraksh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть таблица:
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
А вот теперь бы результаты этого запроса усреднить и сгруппировать по месяцам. Но как это сделать, ума не приложу.
...
Рейтинг: 0 / 0
Вложенные группировки.
    #39282227
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Massaraksh,
Группировать можно не только по полю, но и по результату функции.
А если у тебя дата в формате YYYY.MM.DD, то самое простое - использовать substr()
...
Рейтинг: 0 / 0
Вложенные группировки.
    #39282231
Massaraksh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
...
Рейтинг: 0 / 0
Вложенные группировки.
    #39282470
Massaraksh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет, неправильно. Может быть превышение 2 м/с на определённой высоте, а затем снова <2 м/с, в этом случае MAX(HZ) даст неверное значение. Ладно, буду думать дальше.
...
Рейтинг: 0 / 0
Вложенные группировки.
    #39282594
Massaraksh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всё, определился:
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
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Вложенные группировки.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]