SQL计算为单个行完成两个条件的不同值

时间:2014-06-02 13:59:51

标签: sql google-bigquery

您好我正在使用谷歌BigQuerry,而我正试图从表中获取一行中完成两个值的不同值的总数。我们来解释一下:

我有一张表:

userId  |  platform
123     |  iOS
123     |  android
123     |  other
124     |  android
124     |  iOS
125     |  android
125     |  other
126     |  other

我想获得拥有iOS和Android平台的用户总数(Distinct userId),这两个平台不是单独的。 在这种情况下,结果应为2。

我尝试过:

SELECT count(distinct A.grupo1) 
FROM mytable B
JOIN EACH
    (SELECT userId as grupo1 
     FROM mytable 
     WHERE platform = 'ios'  
     GROUP BY grupo1) A 
ON A.grupo1=B.userId

不起作用:(

2 个答案:

答案 0 :(得分:2)

SELECT corpus, COUNT(*) c 
FROM (
 SELECT word, corpus
 FROM [publicdata:samples.shakespeare] 
 WHERE word='brave' OR word='profession'
 GROUP EACH BY word, corpus
)
GROUP BY corpus
HAVING c=2

有12本莎士比亚书籍都有“勇敢”和“专业”这两个词。

答案 1 :(得分:1)

我不知道BigQuerry,但是既然你用sql标记了这个问题,我认为sql会起作用。

SELECT COUNT(distinct userid)
FROM (
    SELECT userid 
    FROM mytable 
    WHERE platform in ('iOS', 'android')
    GROUP BY userid
    HAVING COUNT(distinct platform) = 2
)