BigQuery - 如何 select 组内的条件

BigQuery - How to select a condition within a group

我有如下记录,有user_iddatecountry等。 其中一些国家是 'unknown'。当我按 user_id 分组时,我希望能够 return 未知之后的下一个值(如果存在的话)。如果不是,return 未知。

所以,从这样的输入数据:

user_id  |   date     | country | gender
----------------------------------------
   A       2015-10-01   unknown     M
   A       2015-10-02      US       M
   B       2015-10-01      CA       M
   B       2015-10-02      US       M
   C       2015-10-04      US       M
   C       2015-10-06      US       M

我想要一个 return:

的查询
   date     | country | gender | num_users
-------------------------------------------
 2015-10-02      US       M          2
 2015-10-01      CA       M          1
 2015-10-04      US       M          1

我目前使用的是普通 GROUP EACH BY 但这不能考虑未知数。

SELECT
  FIRST(date),
  FIRST(country),
  COUNT(DISTINCT user_id,50000000) AS num_users
FROM
  my_table
WHERE
  date BETWEEN '2015-10-01' AND CURRENT_DATE()
GROUP BY
  date,
  country

我正在使用 BigQuery,但可能会采用任何解决方案。 有什么想法吗?谢谢。

这是解决它的一种方法。该示例显示了所有国家/地区对同一用户 "unknown" 以及只有其中一些国家/地区未知

的两种情况
select 
  user_id,
  first(date), 
  ifnull(first(if(country = "unknown", null, country)), "unknown") from
(select "A" user_id, "2015-10-01" date, "unknown" country),
(select "A" user_id, "2015-10-02" date, "unknown" country),
(select "B" user_id, "2015-10-01" date, "CA" country),
(select "B" user_id, "2015-10-02" date, "US" country),
(select "C" user_id, "2015-10-04" date, "unknown" country),
(select "C" user_id, "2015-10-06" date, "US" country)
group by user_id