sql - 如何通过在新表中包含 UID 列进行分组
问题描述
我正在尝试使用以下查询对一些数据进行分组,但我还需要在包含唯一值的 c_schema.worst_case 表中添加来自 a_import.veg 表的 uid 列。据我所知,我无法像往常一样添加它,因为 group by 无法正常工作,因为它需要新表中的所有唯一 ID ...有什么办法吗?
CREATE TABLE IF NOT EXISTS c_schema.worst_case
as SELECT back_str, ahead_str, substr(weather_case, 1, 4), min(min_dist) as min_dist
FROM a_import.veg
GROUP BY back_str, ahead_str, substr(weather_case, 1, 4)
ORDER BY back_str, ahead_str;
解决方案
我猜你想要distinct on
:
SELECT DISTINCT ON (back_str, ahead_str, substr(weather_case, 1, 4)) v.*
FROM a_import.veg v
ORDER BY back_str, ahead_str, substr(weather_case, 1, 4), min_dist;
(选择您实际需要的列。)
实际上,Postgres 现在支持LEFT()
,因此您可以将其缩短为:
SELECT DISTINCT ON (back_str, ahead_str, LEFT(weather_case, 4)) v.*
FROM a_import.veg v
ORDER BY back_str, ahead_str, LEFT(weather_case, 4), min_dist;
推荐阅读
- phpstorm - PhpStorm 中的多条垂直线以获得最大线长
- javascript - 如何在某个类jquery之外仅获取子元素
- c# - 最佳实践:来自异步处理的同步响应
- javascript - 如何首次将值存储到浏览器 localStorage?
- android - Android Studio-如何在应用程序关闭后以编程方式删除最近的应用程序列表
- json - 如何将 json 转换为具有单个标头和多个值的 csv?
- scala - 在 scala 中仅使用递归的单行循环
- javascript - 如何从请求中获取用户?
- woe-id - 是否可以像现在雅虎一样使用城市名称来获得WOEID!API 已关闭
- python - 进程以退出代码 -1073740940 (0xC0000374) 结束