您好我正在使用谷歌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
不起作用:(
答案 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
)