CASE ..然后在Postgresql中

时间:2017-01-05 06:43:18

标签: sql postgresql case

item    |   user    |   times   |   data    |   id
--------+-----------+-----------+-----------+-------
item1   | user1     |   1       | data1     | 1
item2   | user1     |   1       | data2     | 2
item3   | user1     |   1       | data3     | 3
item1   | user2     |   2       | data1     | 4
item2   | user2     |   2       | data2     | 5

以上是我数据库中的示例数据。 我想计算第一次用户1有多少项目也在第二次进行。 在这种情况下,结果应返回2,因为有2个项目,user1在第一次进行而user2在第二次进行。 但经过多次尝试后,我无法构建SQL语句。

有人可以帮忙解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

我不明白问题标题是如何与问题本身相关的。然而,这是一种获得你想要的东西的方法:

select count(*)
from t t1
where "user" = 'user1' and times = 1 and exists (
  select *
  from t t2
  where times = 2 and t1.data = t2.data);

编辑:我刚刚将存在转换为不存在以匹配您的问题编辑: - )