Учитывая столбцы даты запуска (г / м / д) и крайнего срока (г / м / д), как мне написать команду продолжительности в SQL?

Я новичок в SQL, извините за вопрос новичка.

Мне дали таблицу для анализа, и я хочу найти количество дней, прошедших между всеми датами запуска и датами крайнего срока, в новом столбце, который я создал под названием duration. Затем я хочу найти среднее значение за те дни. Какую команду я напишу для этого?

——————————————

Запущен | Срок | Продолжительность |

——————————————-

Ср. | Ср. | Средн.

Это то, что я хочу сделать / найти. Не знаю с чего начать / написать.

Итак, есть крайний срок и фактическая дата запуска, которая может быть до или после крайнего срока? Вы, однако, не хотите знать, как часто крайний срок соблюдался или не соблюдался, вы просто хотите знать среднее количество дней между ними? Итак, если два проекта (?) Завершены на неделю вперед, а один - на две недели позже, вы бы хотели показать цифру ноль?

Thorsten Kettner 01.05.2018 21:24

Пожалуйста, взгляните на ответ ниже - это работает для вас?

Daniel Marcus 01.05.2018 21:25

Я думаю, вам нужно предоставить образцы данных и желаемые результаты.

Gordon Linoff 01.05.2018 21:25

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

Thorsten Kettner 01.05.2018 21:26

Есть столбец даты запуска и столбец крайнего срока с сотнями дат. Проекты заканчиваются в срок, независимо от того, был он завершен или нет. Я создал новый столбец и хочу узнать, сколько дней прошло для каждой строки проекта. Это выполнимо?

user9705996 01.05.2018 21:27

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

spencer7593 01.05.2018 21:33

Таким образом, каждый проект заканчивается на launched, который никогда не превышает deadline. Но «продолжительность» будет от некоторого Дата начала до даты запуска, а не разница между launched и deadline. И, как уже упоминалось, не храните значения, которые вы можете рассчитать на основе существующих значений. Избыточность легко может привести к несоответствиям.

Thorsten Kettner 01.05.2018 21:34
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
1
7
20
2

Ответы 2

Использовать dateiff

select datelaunched, deadline, datediff(day, datelaunched, deadline)
union all
select avg(datelaunched), avg(deadline), avg(datediff(day, datelaunched, deadline))

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

Gordon Linoff 01.05.2018 21:27

Мне любопытно взять «среднее» значение ДАТЫ ... преобразовать дату в числовое значение ГГГГММДД, взять среднее числовое значение и вернуть десятичное значение, которое потенциально не является допустимой датой? Почему? (А функция DATEDIFF принимает два аргумента, если мы собирались использовать TIMESTAMPDIFF?)

spencer7593 01.05.2018 21:29

Я предполагаю, что вы хотите что-то вроде этого:

select avg(timestampdiff(day, datelaunched, deadlined)) as avg_dur_days
from t;

Другие вопросы по теме