Postgresql Запрос - Среднее время из поля datetime в Posgre sql? - PullRequest
1 голос
/ 13 июля 2020

У меня есть таблица SQL:

Id | EntryTime | Duration

И я хочу найти среднее время входа в день между двумя часами с учетом всех записей между этими часами.

поэтому, если мое поле EntryTime между моими часами:

(Edited)
12:00:00
10:00:00
08:00:00
10:00:00

, то среднее возвращаемое время должно быть просто:

10:00:00

Дату вообще не следует принимать во внимание, и она должна возвращаться в строковом формате или способом, который возвращает ТОЛЬКО 10:00:00.

Ответы [ 2 ]

1 голос
/ 15 июля 2020

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

Предполагая, что ваша таблица называется t и что метки времени сохраняются в столбце ts это будет:

select avg(entry_time - entry_time::date) avg_time from t

Демонстрация на DB Fiddle

Примеры данных:

| entry_time          |
| :------------------ |
| 2020-07-14 12:00:00 |
| 2020-07-12 10:00:00 |
| 2020-07-10 08:00:00 |
| 2020-07-01 10:00:00 |

Результаты:

| avg_time |
| :------- |
| 10:00:00 |
0 голосов
/ 24 июля 2020

Попробуйте SELECT avg (entry_time - entry_time :: date) :: time (0) , чтобы избежать доли секунд.

...