我的数据中有“任务”和“开始时间”列。对于每个任务,可能会有一个或多个开始时间。我想做的是,如果每个任务的开始时间都相等,则将其分类为“ X”任务,如果所有任务的开始时间均不相同,则将其分类为“ Y”任务。
这是表格的外观:
答案 0 :(得分:2)
这可以通过使用一组并计算不同的开始时间,并使用大小写返回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;
您可以查看我的解决方案here https://paiza.io/projects/Zu7IBFc-5tFBK8xDuf3hPg?language=mysql P.S.我只是使用Integer而不是date,因为我不想处理日期。
答案 1 :(得分:2)
Select task,
(case when count(distinct start_time) = 1 then 'X' else 'y' end)
from tasks
group by task;
答案 2 :(得分:0)
使用group by task
获取每个任务的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