sql - distinct 和 Over 分区
问题描述
我正在处理 bigquery 中的查询,但遇到以下问题。我的查询如下:
SELECT DISTINCT (concat(rut,created_at)),*,ROW_NUMBER () OVER (PARTITION BY rut ORDER BY created_at ASC) AS ranking
FROM table
WHERE DATE(created_at) <= "2020-12-03"
order by rut,ranking
问题是“DISCINT”并没有消除重复数据,而是如果我消除了OVER PARTITION并将查询保留如下,如果它消除了重复数据。
SELECT DISTINCT (concat(rut,created_at)) ,*
FROM table
WHERE DATE(created_at) <= "2020-12-03"
order by rut
显然,这是 disint 和 OVER PARTITION 如何工作的问题,但我找不到解决方案
解决方案
你需要这样做:
select * ,ROW_NUMBER () OVER (PARTITION BY rut ORDER BY created_at ASC) AS ranking
from (
SELECT DISTINCT (concat(rut,created_at)),*
FROM table
WHERE DATE(created_at) <= "2020-12-03"
) tt
order by rut,ranking
推荐阅读
- javascript - HTML 地理定位 API 的替代方案
- php - 如何从字符串中提取数字并将其分配给变量
- amazon-web-services - 从 API Gateway 启动和停止 EC2 实例
- python - 使用 python .exe 程序访问文件的权限被拒绝
- reactjs - 无法在顶层调用 React Hook “useCreateContext”
- sublimetext - Sublime Text 4:从终端打开多个窗口
- r - 从函数中返回文本和内联 r 降价
- java - 为什么我的 addValueEventListener 不能正常工作?
- java - mybatis 偶尔使用 selectbyexample 时不返回数据
- vector - 鉴于向量在初始化后将是不可变的,如何在 Rust 中正确初始化向量?