0

我确信这已经得到了回答,但我无法找到正确的术语来搜索以找到我的答案。

我有一张桌子,例如:

USERNAME     ACTIONNUM      VALUE1     VALUE2
--------     ----------     ------     ------
Person1      Action1             0          1
Person1      Action1             1          1
Person1      Action1             1          1
Person1      Action2             0          1
Person1      Action2             1          1
Person2      Action3             0          1
Person2      Action3             1          1
Person3      Action4             1          1

对于这个例子,我想对 0,1 的 VALUE1 和 VALUE2 执行一次搜索,只给我 USERNAME。所以第一次搜索会给出:Person1,Person2。

然后,第二次搜索应该给我一个不同的动作编号,并计算动作存在的次数为 1,1 但只给我在第一次搜索中找到 USERNAME 的行。

所以对于这个例子,我希望查询返回:

USERNAME     ACTIONNUM      COUNT
--------     ----------     -----
Person1      Action1            2
Person1      Action2            1
Person2      Action3            1

所以 Person3 被跳过,因为 Person3 没有从第一次搜索中返回

4

4 回答 4

1

您可以在子查询中使用 IN:

select * from table where value1 = 1 and value2 = 1 and username in  (
select username from table where value1 = 0 and value2 = 1
)
于 2013-10-11T15:21:04.783 回答
1

更改此答案,我误读了部分问题。

SELECT username, actionnum, (select count(actionnum)
                             from test1 b
                             where b.value1=1
                             and b.value2=1
                             and b.username = a.username
                             and b.actionnum = a.actionnum)
FROM test1 a
WHERE  value1 = 0 AND value2 = 1
order by 1, 2;

sqlfiddle

于 2013-10-11T15:22:33.667 回答
1

尝试这样的事情

Select 
  UserName
, ActionNum
, Count(*) As Cnt
From MyTable
    Where Value1 = 1
      And Value2 = 1 
      And UserName In
        ( 
            Select Distinct UserName 
            From MyTable
            Where Value1 = 0
              And Value2 = 1 
        )
Group By
  UserName
, ActionNum
于 2013-10-11T15:23:53.133 回答
0

你可以尝试类似..

SELECT 
    table.USERNAME,
    table.ACTIONNUM,
    COUNT(table.ACTIONNUM) as ACTIONNUMCOUNT
FROM 
    table
WHERE
    table.VALUE1 = 1
    AND
    table.VALUE2 = 1
    AND
    USERNAME IN 
                (
                    SELECT DISTINCT USERNAME FROM table where value1 = 0 and value2 = 1
                )
GROUP BY
    table.ACTIONNUM
于 2013-10-11T15:24:58.560 回答