可以按数据而不是按列分组吗?
Its possible to Group by data instead of column?
我在想,是否可以使用GROUP BY 以特定方式基于特定列的数据而不是该列。所以我的问题是我可以根据特定字段的 0 次出现来创建组吗?
DIA MES YEAR TODAY TOMORROW ANALYSIS LIMIT
---------- ---------- ---------- ---------- ---------- ---------- ----------
19 9 2016 111 988 0 150
20 9 2016 988 853 853 150
21 9 2016 853 895 895 150
22 9 2016 895 776 776 150
23 9 2016 776 954 0 150
26 9 2016 954 968 968 150
27 9 2016 968 810 810 150
28 9 2016 810 937 937 150
29 9 2016 937 769 769 150
30 9 2016 769 1020 0 150
3 10 2016 1020 923 923 150
4 10 2016 923 32 32 150
比如,在这种情况下,我想创建群组,如下所示:
- 第 1 组(分析):0
- 第 2 组(分析):853、895,776,0
- 第 3 组(分析):968,810,937,169,0
- ...
假设你的 table 名字是 tbl
,像这样的东西应该可以工作(如果你想 Google 它叫做 "start-of-group" 方法):
select
from ( select tbl.*,
count(case when analysis = 0 then 1 end)
over (order by year, mes, dia) as cnt
from tbl
)
where ...
GROUP BY cnt
;
我在想,是否可以使用GROUP BY 以特定方式基于特定列的数据而不是该列。所以我的问题是我可以根据特定字段的 0 次出现来创建组吗?
DIA MES YEAR TODAY TOMORROW ANALYSIS LIMIT
---------- ---------- ---------- ---------- ---------- ---------- ----------
19 9 2016 111 988 0 150
20 9 2016 988 853 853 150
21 9 2016 853 895 895 150
22 9 2016 895 776 776 150
23 9 2016 776 954 0 150
26 9 2016 954 968 968 150
27 9 2016 968 810 810 150
28 9 2016 810 937 937 150
29 9 2016 937 769 769 150
30 9 2016 769 1020 0 150
3 10 2016 1020 923 923 150
4 10 2016 923 32 32 150
比如,在这种情况下,我想创建群组,如下所示:
- 第 1 组(分析):0
- 第 2 组(分析):853、895,776,0
- 第 3 组(分析):968,810,937,169,0
- ...
假设你的 table 名字是 tbl
,像这样的东西应该可以工作(如果你想 Google 它叫做 "start-of-group" 方法):
select
from ( select tbl.*,
count(case when analysis = 0 then 1 end)
over (order by year, mes, dia) as cnt
from tbl
)
where ...
GROUP BY cnt
;