WedX - журнал о программировании и компьютерных науках

SQL Получение данных по часам

Привет У меня есть база данных погоды в SQL Server 2008, которая заполнена наблюдениями за погодой, которые проводятся каждые 20 минут. Я хочу получать записи о погоде за каждый час, а не каждые 20 минут, как я могу отфильтровать некоторые результаты, чтобы в результатах было только первое наблюдение за каждый час.

Пример:

7:00:00
7:20:00
7:40:00
8:00:00

Желаемый результат

7:00:00 
8:00:00
28.12.2015

  • Есть ли в каждом часе строки для каждого 20-минутного приращения или есть какие-то пробелы? 29.12.2015
  • Примените условие WHERE следующим образом: WHERE datepart(minute, hour_column) = <here_desired_minutes>. В вашем случае это будет 00 за каждый час. 29.12.2015

Ответы:


1

Чтобы получить именно то, что вы указали в качестве желаемого результата (за вычетом того факта, что это INT вместо TIME; ничего сложного в исправлении),

SELECT DISTINCT DATEPART(HOUR, TimeStamp)
FROM Observations

Вы также можете добавить CAST(TimeStamp AS DATE), если хотите.


Предполагая, что вам также нужны данные, это немного зависит, но от того, что вы описали, простое решение просто сказать:

SELECT *
FROM Observations
WHERE DATEPART(MINUTE, TimeStamp) = 0

Однако это не удается, если у вас отсутствуют данные, что довольно часто.


Если у вас есть несколько часов, когда вам нужны данные, но нет строки в :00, вы можете сделать что-то вроде этого:

WITH cte AS (
    SELECT *, ROW_NUMBER() OVER (PARTITION BY CAST(TimeStamp AS DATE), DATEPART(HOUR, TimeStamp) ORDER BY TimeStamp)
    FROM Observations
)

SELECT *
FROM cte
WHERE n = 1

Это займет первое место для любой комбинации даты/часа.

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

28.12.2015

2

Вы можете использовать следующую формулу, чтобы получить ближайший час к моменту времени (в данном случае это GETUTCDATE()).

SELECT  DATEADD(MINUTE, DATEDIFF(MINUTE, 0, GETUTCDATE()) / 60 * 60, 0)

Затем вы можете использовать эту формулу в предложении WHERE вашего SQL-запроса, чтобы получить нужные данные.

28.12.2015

3

Что вам нужно, так это GROUP BY желаемый период времени, например дату и часы. Затем вы получаете значение MIN таймфрейма. Поскольку вы не указали, какие столбцы вы используете, это самое общее, что я могу дать.

28.12.2015

4

Использовать как фильтр:

... where DATEPART(MINUTE, DateColumn) = 0
28.12.2015

5

Чтобы отфильтровать результат за каждый целый час, вы можете установить в предложении where проверку на 00 минут, поскольку каждый целый час равен ЧЧ:00:00.

Чтобы получить минутную часть из метки времени, вы можете использовать функцию DATEPART.

SELECT * 
FROM YOURTABLENAME
WHERE DATEPART(MINUTE, YOURDATEFIELDNAME) = 0

Дополнительную информацию о функции datepart можно найти здесь: https://www.w3schools.com/sql/func_datepart.asp

28.12.2015
Новые материалы

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

Учебные заметки: создание моего первого пакета Node.js
Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

ИИ в аэрокосмической отрасли
Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


Для любых предложений по сайту: [email protected]