1
autotesting 2018-10-20 10:53:55 +08:00
借问一个问题,如果用 sql 语句先对某几个字段 group_by 了之后,如何取到关于这几个字段分组后,所有其他数据的整体数据呢?
|
2
iappled 2018-10-20 10:58:07 +08:00
@autotesting count sum
|
3
sfqtsh 2018-10-20 12:21:56 +08:00 via Android
rc1 时就已经说会在 18 号发布正式版 11.0 了。
|
4
JackieMe 2018-10-20 13:18:32 +08:00
Dedian sid 貌似前几天就已经有了。
|
5
Klingon 2018-10-20 16:10:56 +08:00
@autotesting 每天看懂你需求,你是要分组聚合还是分窗口,好像你要问的是窗口函数
|
6
autotesting 2018-10-20 17:05:40 +08:00
@iappled 不是 group by 取 count 或者 sum,而是 count 中的所有对象。
|
7
autotesting 2018-10-20 17:08:55 +08:00
@Klingon 分组后取到所有此分组的所有对象,而不是仅仅是 count 或者 max min 这样的结果。
|
8
ShareDuck 2018-10-20 17:17:19 +08:00
@autotesting #7 那么你不应该是用 where 就能解决问题了么?为何要用 group by ?
|
9
autotesting 2018-10-20 17:20:31 +08:00
@ShareDuck 是需要先分组,然后对应的取到每个分组的所有对象,用 where 的话,我应该是先知道查询条件才能 where 吧,我是不是理解的不对?
|
10
zjp OP @autotesting 中文的分组和 SQL 的 group by 含义不一样,group by 后每组只能有一行输出。你要的还是窗口。
|
11
ShareDuck 2018-10-20 17:45:57 +08:00
@autotesting #9 那你的需求应该是先“获取表中某个列有多少个不同值”,这个操作不应该用 group by 吧,用 SELECT DISTINCT,参考 http://www.w3school.com.cn/sql/sql_distinct.asp
|
12
ShareDuck 2018-10-20 17:49:05 +08:00
@autotesting #9
查了一下“窗口”的资料,10 楼的方案应该是你需要的。 |
13
paodange 2018-10-20 19:27:01 +08:00 via Android
|
14
autotesting 2018-10-21 00:38:58 +08:00
|
15
zjp OP 直觉上不可能。关系数据库的单位是元组,也就是行,不能嵌套。结果集也只有行和列属性
@autotesting |
16
zjp OP |
17
jamblues 2018-10-21 01:38:11 +08:00 via iPhone
二楼应该是问的典型排行榜问题 在多个分类下如何取出每个排行榜的前 N 条数据
|
18
paodange 2018-10-21 03:09:43 +08:00 via Android
@autotesting 这样的话,把 COL1 查两次,按 COL1 排序不就好了吗? select COL1 as XXX,* from table order by COL1,ID
|
19
hrong 2018-10-21 08:20:24 +08:00
|
20
autotesting 2018-10-21 09:09:42 +08:00
@zjp 对
|
21
aborigine 2018-10-22 00:29:12 +08:00 via iPad
MySQL 可以用 group_concat 实现 postgresql 不清楚
|
22
zjp OP @aborigine 新知识。也想过通过函数是可以做到,在 CLI 中输出还没什么问题,但是代码中解析结构集就很麻烦了。看起来还是代码层合并分组合理些
|
23
beginor 2018-10-22 06:09:27 +08:00 via Android
如果 mysql 的 group_concat 能解决的话,可以试试 pg 的 array_agg :
select col1, array_agg(col2) as col2s from table group by col1 |
25
northernlights 2018-10-23 19:25:21 +08:00
个人的项目一直在用 PostgreSQL+.NET Core+EF Core+Docker
|