Bigquery select 个不同的值

Bigquery select distinct values

如何在 Google Bigquery 中 select 不同的值?

查询:

SELECT DISTINCT cc_info
FROM user
WHERE date = ?

谢谢!

SELECT cc_info
FROM user
WHERE date = ?
GROUP BY cc_info

尝试使用 group by

SELECT cc_info
FROM user
WHERE date = ?
group by cc_info

只需使用分组依据,

SELECT cc_info
FROM user
WHERE date = ?
GROUP BY cc_info

如果你想计算 DISTINCT 值,你可以使用,

SELECT COUNT(DISTINCT cc_info)
FROM user
WHERE date = ?
SELECT COUNT(DISTINCT cc_info)
FROM user
WHERE date = ?

不是 正确的查询,因为 DISTINCT 是统计近似值,不能保证准确。参见 https://cloud.google.com/bigquery/docs/reference/legacy-sql#countdistinct

所以更好的方法是

select EXACT_COUNT_DISTINCT(cc_info) from user where date = ?

对于所有已经在BigQuery中找到DISTINCT方法并且需要对具有大列的表使用唯一字段功能的人来说,使用tning中提到的GROUP BY不会可能。

截至 2020 年,BigQuery 具有 DISTINCT 修饰符。您需要将查询包装为:

SELECT DISTINCT usr.cc_info
FROM (
  SELECT *
  FROM user
  WHERE date = ?
) usr

这对于从其他 SQL 产品转移过来的人来说非常方便。

这是实现您的目标(以防其他人需要它)的另一种方式,适用于当前的 BigQuery 2020。

SELECT colname FROM table1
UNION DISTINCT 
SELECT colname FROM table2
UNION DISTINCT
.
.
.
SELECT colname FROM tableN 

我的参考是 this article