【问题标题】:Loop through column and assign 0/1 MySQL遍历列并分配 0/1 MySQL
【发布时间】:2017-05-27 17:53:34
【问题描述】:

我有一个关于参加活动的消费者的 MySQL 数据库。该数据库包含一个用户表、事件表和签入表,它们都是相互连接的。但是数据库只包含有关用户参加某个活动的信息。 我想要一个循环遍历几个事件并检查用户是否去了其中一个的查询,并给出结果:

Preffered result

我尝试过以下查询:

select attend.idperson, attend.idmeeting,
    (select case when 
    attend.idmeeting = 2901 or
    attend.idmeeting = 9044 or
    attend.idmeeting = 9161 or
    attend.idmeeting = 2626
    then 1 else 0 end) as attended
from attend
join meetings on attend.idmeeting = meetings.idmeeting
join persons on attend.idperson = persons.id
where meetings.verified = 1;

但这会导致人们实际参加的所有会议,如果在查询时选择案例中的一个会议被参加,则分配 1,其余会议分配 0。目标是使用逻辑回归预测出勤率,这种解决方案会使所有进一步的用户数据产生偏差。

【问题讨论】:

    标签: mysql sql loops select case-when


    【解决方案1】:

    您可以建立一个所有人员和会议的列表,然后离开加入出席详情:

    select distinct a1.*, 
           case
             when attend.idperson is null then 0 
             else 1 
           end as attended
    from 
    (
     select meetings.idmeeting, persons.id as p_id
     from meetings
     cross join persons
     where meetings.verified = 1
    ) a1
    left join attend
      on attend.idmeeting = a1.idmeetings
      and attend.personid a1.p_id
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-28
      • 1970-01-01
      • 1970-01-01
      • 2013-04-14
      • 2011-06-24
      • 2014-10-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多