当数据重复的时候分组才有意义。
注意点:WHERE和HAVING的区别
- WHERE:是在执行GROUP BY操作之前进行的过滤,表示从全部数据之中筛选出部分的数据,在WHERE之中不能使用统计函数;
- HAVING:是在GROUP BY分组之后的再次过滤,可以在HAVING子句中使用统计函数;
示例:
select
b.dept_code dept_id,
decode(a.find_emp_code,'','小计:',a.find_emp_code) maker,
count(a.request_id) list_num,
(count(a.request_id)*to_number((select INFO_DETAIL_VALUE1 from equ_sys_info_detail where info_type_code = '075' and INFO_DETAIL_CODE='01'))) list_sum,
to_number(null) bath_num,
(to_number(null)*to_number((select INFO_DETAIL_VALUE1 from equ_sys_info_detail where info_type_code = '075' and INFO_DETAIL_CODE='02'))) bath_sum
from EQU_MAINTAIN_REQUEST_ORDER a ,PER_INFO b
where a.find_emp_code = b.emp_code and a.state_id not in(01,23,24,99) and b.dept_code <>'010301' and b.dept_code like '0103%'
group by b.dept_code,rollup(a.find_emp_code)
--查询结果 每个部门自动显示小计数据
1 010302 3013 212 2120
2 010302 3016 75 750
3 010302 3017 37 370
4 010302 3023 74 740
5 010302 3024 115 1150
6 010302 3043 82 820
7 010302 3048 53 530
8 010302 3107 18 180
9 010302 3109 5 50
10 010302 小计: 671 6710
11 010303 3019 33 330
12 010303 3020 47 470
13 010303 3027 39 390
14 010303 3029 52 520
15 010303 3030 36 360
16 010303 3044 119 1190
17 010303 3046 68 680
18 010303 3077 16 160
19 010303 3092 4 40
20 010303 3106 10 100
21 010303 小计: 424 4240
22 010304 3018 25 250
23 010304 3022 219 2190
24 010304 3031 38 380
25 010304 3032 58 580
26 010304 3039 69 690
27 010304 3053 29 290
28 010304 3081 38 380
29 010304 3087 48 480
30 010304 3105 19 190
31 010304 3108 8 80
32 010304 小计: 551 5510
33 010305 3014 70 700
34 010305 3035 27 270
35 010305 3036 66 660
36 010305 3038 10 100
37 010305 3042 35 350
38 010305 3047 52 520
39 010305 3051 11 110
40 010305 3054 166 1660
41 010305 3076 42 420
42 010305 3078 24 240
43 010305 小计: 503 5030
44 010306 3004 5 50
45 010306 3008 30 300
46 010306 3009 10 100
47 010306 3055 4 40
48 010306 小计: 49 490
49 010308 3011 111 1110
50 010308 3026 80 800
51 010308 3034 44 440
52 010308 3041 117 1170
53 010308 3045 325 3250
54 010308 3050 103 1030
55 010308 3052 47 470
56 010308 3079 71 710
57 010308 3086 53 530
58 010308 3097 4 40
59 010308 小计: 955 9550