用于比较具有计数>的记录的SQL查询1

时间:2016-12-07 19:41:32

标签: sql count

我在子查询中有一个名为Temp的临时表。在此表中,我有user_id,created_on和answer列。答案栏仅包含是或否。

我想:

查找用户是否对不同的created_on日期有不同的答案,如果是这种情况,则比较所有这些答案以查找用户是否曾回答“是”

我看起来像这样的表:

| user_id | created_on | answer |

|       1 | 12/7/2016  | no     |

|       1 | 12/6/2016  | no     |

|       1 | 12/5/2016  | yes    |

|       2 | 11/30/2016 | no     |

|       2 | 11/29/2016 | no     |

|       3 | 10/1/2016  | yes    |

|       4 | 9/2/2016   | no     |

输出应如下所示:

| user_id | final_answer |

|    1    |     yes      |

|    2    |     no       |

|    3    |     yes      |

|    4    |     no       |

我可以想到Self Join来解决这个问题但是有些情况下user_id计数为10.对于只有一个user_id条目的情况,输出应该只从答案列返回该单个记录。如何使用SQL查询解决此问题?

1 个答案:

答案 0 :(得分:1)

试试这个。分配1或0,具体取决于他们是否回答是。拿这个总和。如果它大于0意味着他们必须在某个时候回答“是”。

SELECT 
  user_id,
  CASE 
    WHEN(SUM(CASE WHEN answer = 'yes' THEN 1 ELSE 0 END)) > 0 THEN 'yes' 
    ELSE 'no' 
  END AS final_answer
FROM
  YourTempTable
GROUP BY user_id