sql - 提取其他字段也匹配的重复值
问题描述
我正在使用以下查询zip
在我的数据集中查找重复值。
这确实可以显示任何重复 zip 值的国家、城市和街道,但我真的希望它只包含重复的国家、城市和街道,而不仅仅是邮政编码?
SELECT
Country,
City,
Street,
zip
FROM
project.dataset.tablename
WHERE
zip > 1
AND CAST(zip AS string) IN (
SELECT
CAST(zip AS string)
FROM
project.dataset.tablename
GROUP BY
CAST(zip AS string)
HAVING
COUNT(CAST(zip AS string)) > 1 )
ORDER BY
zip DESC
解决方案
我想你想要:
SELECT t.*
FROM (SELECT t.*,
COUNT(*) OVER (PARTITION BY zip, country, city, street) as cnt
FROM project.dataset.tablename t
) t
WHERE cnt > 1
ORDER BY zip;
无论如何,对于这类问题,窗口函数通常会提供最佳解决方案。
推荐阅读
- mysql - Kubernetes 将 mysql 数据库的数据保存在一个卷中
- php - 如何将 .PHP 扩展名与 Windows 中的文件类型相关联
- google-cloud-datastore - 谷歌云数据存储扩展限制
- r - 为什么在 Windows 上通过 Powershell 将数据加载到 Docker 中的 clickhouse 时出现换行错误?
- python - ValueError:合并键在左侧 Pandas 上包含空值
- imagemagick - WebP 的 SSIM 计算
- jquery - onclick 未捕获的语法错误?
- android-layout - 将拉伸的行放在颤振应用程序的列中
- ruby-on-rails - Heroku Rails 部署/构建错误:找不到 Gemfile.lock 所需的“捆绑程序”(版本)
- algorithm - D* Lite:你能根据实际机器人位置更改起始节点吗?