Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/22: Рейтинг темы: голосов - 22, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 15.03.2018
Сообщений: 22

MSSQL подсчет среднего для каждого из дней

16.09.2021, 10:20. Показов 4412. Ответов 6

Студворк — интернет-сервис помощи студентам
Добрый день, имеется таблица, для которой требуется запрос который считает для каждого дня среднюю температуру за 5 предыдущих дней.


Не понимаю как для каждого дня найти возможность предыдущих 5(то есть, условно, первый день первого месяца не должен считать среднее). Сделал разбивку по месяцам и подсчитал для каждого месяца среднюю, но понимаю, что это не нужно вовсе. Есть предположение, что делать нужно через копию таблицы
Миниатюры
MSSQL подсчет среднего для каждого из дней  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.09.2021, 10:20
Ответы с готовыми решениями:

Программа для поиска среднего балла каждого учащегося и общего среднего балла
вот программа для поиска среднего балла каждого учащегося и общего среднего балла. при запуске программы выдает внутреннюю ошибку...

Подсчет количества дней без учета нерабочих праздничных дней в периоде
Нужна программа, которая бы вычисляла дату, на 20 дней больше исходной, но без учета нерабочих праздничных дней в периоде (включая первую...

Подсчёт среднего арифметического матрицы, и отклонения от среднего у элементов первой строки
Дана целочисленная матрица. Составить программу подсчёта среднего арифметического значения матрицы. Найти отклонение от среднего у...

6
 Аватар для Аватар
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
16.09.2021, 10:52
Лучший ответ Сообщение было отмечено LeoWillian как решение

Решение

если бы в твоей табличке вместо номера месяца и числа была бы нормальная уникальная дата типа Date, то примерно так можно:
T-SQL
1
2
3
4
5
6
7
8
SELECT U.dat,
    CASE WHEN U.CountRec=5 THEN U.AvgTemp ELSE NULL END AS AvgTemp
  FROM (
    SELECT T.dat,COUNT(T1.dat) CountRec,AVG(T1.temperature) AvgTemp
      FROM MyTable T
        LEFT JOIN MyTable T1 ON DATEDIFF(day, T1.dat, T.dat) BETWEEN 1 AND 5
      GROUP BY T.dat) U
  ORDER BY U.dat
Среднее считается только для тех дат, у которых есть 5 подряд идущих предшествующих дат. Возиться же с номерами месяцев и числами, высчитывая сколько дней в месяце совершенно нет желания. Кстати для февраля без года вообще не известно сколько дней в месяце )
1
5966 / 4542 / 1094
Регистрация: 29.08.2013
Сообщений: 28,151
Записей в блоге: 3
16.09.2021, 10:53
то есть вам нужно таблицу разбить на блоки по 5 строк и вывести среднюю?
1
0 / 0 / 0
Регистрация: 15.03.2018
Сообщений: 22
16.09.2021, 10:58  [ТС]
Я понимаю, что если бы была дата, то просто через дэйтдифф, но мне дана именно такая таблица и нужно работать с ней

Добавлено через 3 минуты
Примерно да, исходя из этих данных, нужно для 6 и 7 дней каждого месяца подсчитать среднюю за 1-5 день(для шестого дня) и 2-6 день(для 7го дня)
0
 Аватар для Аватар
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
16.09.2021, 11:00
Лучший ответ Сообщение было отмечено LeoWillian как решение

Решение

А преобразовать в запросе слабо? Так например: DATEFROMPARTS(2021, month, day). Естестно даст ошибку если месяц или число левые
1
0 / 0 / 0
Регистрация: 15.03.2018
Сообщений: 22
16.09.2021, 11:04  [ТС]
То есть мне использовать DATEFROMPARTS(), а затем делать через datediff?
0
 Аватар для Аватар
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
16.09.2021, 11:13
А чего нет? Используй например обобщенный блок with. В обобщенном блоке запрос с преобразованием. В основном запросе можно мой запрос, только вместо MyTable CTE-псевдоним
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.09.2021, 11:13
Помогаю со студенческими работами здесь

Запрос для получения среднего балла для каждого курса по каждому предмету
Здравствуйте. Есть готовая база данных из нескольких таблиц, нужно написать запрос в IBexpert из заголовка этой темы. Есть схожий...

Подсчет среднего значения для положительных элементов заданного файла
Написать программу подсчета среднего значения для положительных элементов заданного файла (файл содержит в каждой записи два числа...

Минимальное значение температуры для каждого из дней наблюдений.
Метеорологи ведут многолетние наблюдения за тем, в каком году была минимальная температура в данный день года. Например, абсолютный минимум...

Подсчёт среднего значения кол-ва полученных данных в секунду. Как это сделать не вызывая подсчёт 1 раз в сек
Здравствуйте. Мне нужно рассчитать среднее значение полученных данных в секунду. Например, есть класс: using System; namespace...

Для каждого из дней вывести суп дня согласно заданных правил
В кафе каждый день под названием «суп дня» подают новый суп. Супы дня чередуются в следующем порядке: щи (всегда первые), борщ, щавелевый...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru