PostgreSQL 11 发布

2018-10-20 09:52:15 +08:00
 zjp
https://www.postgresql.org/about/news/1894/

其实已经发布两天了...这节点真的冷清😂
5443 次点击
所在节点    PostgreSQL
25 条回复
autotesting
2018-10-20 10:53:55 +08:00
借问一个问题,如果用 sql 语句先对某几个字段 group_by 了之后,如何取到关于这几个字段分组后,所有其他数据的整体数据呢?
iappled
2018-10-20 10:58:07 +08:00
@autotesting count sum
sfqtsh
2018-10-20 12:21:56 +08:00
rc1 时就已经说会在 18 号发布正式版 11.0 了。
JackieMe
2018-10-20 13:18:32 +08:00
Dedian sid 貌似前几天就已经有了。
Klingon
2018-10-20 16:10:56 +08:00
@autotesting 每天看懂你需求,你是要分组聚合还是分窗口,好像你要问的是窗口函数
autotesting
2018-10-20 17:05:40 +08:00
@iappled 不是 group by 取 count 或者 sum,而是 count 中的所有对象。
autotesting
2018-10-20 17:08:55 +08:00
@Klingon 分组后取到所有此分组的所有对象,而不是仅仅是 count 或者 max min 这样的结果。
ShareDuck
2018-10-20 17:17:19 +08:00
@autotesting #7 那么你不应该是用 where 就能解决问题了么?为何要用 group by ?
autotesting
2018-10-20 17:20:31 +08:00
@ShareDuck 是需要先分组,然后对应的取到每个分组的所有对象,用 where 的话,我应该是先知道查询条件才能 where 吧,我是不是理解的不对?
zjp
2018-10-20 17:30:51 +08:00
@autotesting 中文的分组和 SQL 的 group by 含义不一样,group by 后每组只能有一行输出。你要的还是窗口。
ShareDuck
2018-10-20 17:45:57 +08:00
@autotesting #9 那你的需求应该是先“获取表中某个列有多少个不同值”,这个操作不应该用 group by 吧,用 SELECT DISTINCT,参考 http://www.w3school.com.cn/sql/sql_distinct.asp
ShareDuck
2018-10-20 17:49:05 +08:00
@autotesting #9
查了一下“窗口”的资料,10 楼的方案应该是你需要的。
paodange
2018-10-20 19:27:01 +08:00
分组后你拿什么跟原数据进行关联呢?如果是唯一 id,那本身就一条记录,没必要分组啊。有一个情况是,在 group by 后面加上 having 筛选一部分数据,然后再通过 id 与原表数据关联。比如查询一个表中,name 字段有相同的整条记录。select * from table a join (select name from table group by name having count(1)>1) b on a.name=b.name
autotesting
2018-10-21 00:38:58 +08:00
@paodange 其实是想得到和 python groupby 一样的效果,简单讲,就是
| ID | COL1 | COL2 |
--------------------
| 1 | 0 | 0 |
| 2 | 0 | 1 |
| 3 | 1 | 11 |
| 4 | 1 | 12 |
| 5 | 1 | 16 |

比如,我想按 COL1 分组,然后得到的结果是(0,(model1,model2), (1, model3, model4, model5))这样的效果。

@ShareDuck @zjp @Klingon 可能这样描述会更清楚一点。
zjp
2018-10-21 01:15:51 +08:00
直觉上不可能。关系数据库的单位是元组,也就是行,不能嵌套。结果集也只有行和列属性
@autotesting
zjp
2018-10-21 01:18:21 +08:00
@autotesting
@zjp
你说的是 (0,(model1,model2)), (1, (model3, model4, model5))吧……
jamblues
2018-10-21 01:38:11 +08:00
二楼应该是问的典型排行榜问题 在多个分类下如何取出每个排行榜的前 N 条数据
paodange
2018-10-21 03:09:43 +08:00
@autotesting 这样的话,把 COL1 查两次,按 COL1 排序不就好了吗? select COL1 as XXX,* from table order by COL1,ID
hrong
2018-10-21 08:20:24 +08:00
@autotesting 费了半天尽 ,14 楼这样你早点描述不就行了,浪费了人家多少时间。

这个要用 spark 的 flatmap 之类的函数实现吧。我也不是很精通,抱歉。
autotesting
2018-10-21 09:09:42 +08:00
@zjp

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/499349

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX