google-bigquery - 使用 HAVING COUNT(*) = 1 BiqQuery 时如何包含行
问题描述
我有一个包含 30 多列的 bigQuery 表,我想 SELECT * 其中 session 是唯一的。
我有这个查询:
SELECT *
FROM `table.id`
WHERE session IN (
SELECT session
FROM `table.id`
GROUP BY session
HAVING COUNT(*) = 1
)
它有效,但我刚刚从另一个HAVING COUNT(*) = 1
排除重复行的问题中了解到:
请注意,DISTINCT 用于显示不同的记录,包括来自重复的 1 条记录。另一方面, HAVING COUNT( ) = 1 只检查不重复的记录。举个简单的例子,如果会话有 : 1, 1, 2, 3 DISTINCT 将导致: 1, 2, 3 HAVING COUNT( ) = 1 将导致: 2, 3
我需要DISTINCT
结果,即包含一个重复项的结果。
任何人都可以帮助我吗?在此先感谢,亲切的问候
解决方案
也许ROW_NUMBER?
SELECT *
FROM (
SELECT *, ROW_NUMBER() OVER (PARTITION BY session) as row_num
FROM `table.id`
)
WHERE row_num = 1
推荐阅读
- django - SQL 什么时候在 Django ORM 中执行
- java - Android Studio:有没有办法实时查看所有执行的文件?
- node.js - Twitter 在跟踪多个 id 时返回错误 401
- stata - 如何生成汇总统计表
- git - 有没有办法恢复我上次推送到 git 远程的数据?
- php - ajax中的Codeigniter表单验证
- r - 使用 ggplot2 绘图的不规则时间序列未正确缩放并且看起来很拥挤
- java - 如何使用 Gradle 将 jar 文件添加到 libgdx 项目
- laravel - 如何过滤类型以显示在视图中
- python - 为什么`tox`在Windows的系统Python目录中安装包?