#sql
#sql
Вопрос:
В моих данных есть столбцы «Задача» и «Время начала». Для каждой задачи может быть одно или несколько времен запуска. Что я хочу сделать, так это классифицировать каждую задачу как задачу «X», если все ее времена начала равны, и как задачу «Y», если все ее времена начала не равны.
Вот как должна выглядеть таблица :
Комментарии:
1. Какую базу данных вы используете?
Ответ №1:
Этого можно достичь, используя group by и подсчитывая отдельное время начала и используя регистр для возврата X или Y.
Select task,
(case when count(distinct start_time) = 1 then 'X' else 'y' end)
from tasks
group by task;
или это, если вы хотите, чтобы это выглядело точно так же, как на картинке.
Select tasks.task, tasks.start_time, new.new
from tasks, (Select task,
(case when count(distinct start_time) = 1 then 'X' else 'y' end) as new
from tasks
group by task) as new
where tasks.task = new.task;
Вы можете просмотреть мое решение здесь https://paiza.io/projects/Zu7IBFc-5tFBK8xDuf3hPg?language=mysql P.S. Я просто использую Integer вместо date, потому что мне не хотелось иметь дело с датами, лол.
Ответ №2:
Select task,
(case when count(distinct start_time) = 1 then 'X' else 'y' end)
from tasks
group by task;
Ответ №3:
С group by task
помощью get значение new_column
для каждой задачи, а затем присоединиться к таблице tasks
:
select t.id, t.task, g.new_column
from tasks t inner join (
select
task,
(case when count(distinct starttime) = 1 then 'X' else 'Y' end) new_column
from tasks
group by task
) g on g.task = t.task