~linuxjedi/drizzle/trunk-bug-667053

« back to all changes in this revision

Viewing changes to mysql-test/r/olap.result

  • Committer: brian
  • Date: 2008-06-25 05:29:13 UTC
  • Revision ID: brian@localhost.localdomain-20080625052913-6upwo0jsrl4lnapl
clean slate

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
drop table if exists t1,t2;
 
2
set @sav_dpi= @@div_precision_increment;
 
3
set div_precision_increment= 5;
 
4
show variables like 'div_precision_increment';
 
5
Variable_name   Value
 
6
div_precision_increment 5
 
7
create table t1 (product varchar(32), country_id int not null, year int, profit int);
 
8
insert into t1  values ( 'Computer', 2,2000, 1200),
 
9
( 'TV', 1, 1999, 150),
 
10
( 'Calculator', 1, 1999,50),
 
11
( 'Computer', 1, 1999,1500),
 
12
( 'Computer', 1, 2000,1500),
 
13
( 'TV', 1, 2000, 150),
 
14
( 'TV', 2, 2000, 100),
 
15
( 'TV', 2, 2000, 100),
 
16
( 'Calculator', 1, 2000,75),
 
17
( 'Calculator', 2, 2000,75),
 
18
( 'TV', 1, 1999, 100),
 
19
( 'Computer', 1, 1999,1200),
 
20
( 'Computer', 2, 2000,1500),
 
21
( 'Calculator', 2, 2000,75),
 
22
( 'Phone', 3, 2003,10)
 
23
;
 
24
create table t2 (country_id int primary key, country char(20) not null);
 
25
insert into t2 values (1, 'USA'),(2,'India'), (3,'Finland');
 
26
select product, sum(profit) from t1 group by product;
 
27
product sum(profit)
 
28
Calculator      275
 
29
Computer        6900
 
30
Phone   10
 
31
TV      600
 
32
select product, sum(profit) from t1 group by product with rollup;
 
33
product sum(profit)
 
34
Calculator      275
 
35
Computer        6900
 
36
Phone   10
 
37
TV      600
 
38
NULL    7785
 
39
select product, sum(profit) from t1 group by 1 with rollup;
 
40
product sum(profit)
 
41
Calculator      275
 
42
Computer        6900
 
43
Phone   10
 
44
TV      600
 
45
NULL    7785
 
46
select product, sum(profit),avg(profit) from t1 group by product with rollup;
 
47
product sum(profit)     avg(profit)
 
48
Calculator      275     68.75000
 
49
Computer        6900    1380.00000
 
50
Phone   10      10.00000
 
51
TV      600     120.00000
 
52
NULL    7785    519.00000
 
53
select product, country_id , year, sum(profit) from t1 group by product, country_id, year;
 
54
product country_id      year    sum(profit)
 
55
Calculator      1       1999    50
 
56
Calculator      1       2000    75
 
57
Calculator      2       2000    150
 
58
Computer        1       1999    2700
 
59
Computer        1       2000    1500
 
60
Computer        2       2000    2700
 
61
Phone   3       2003    10
 
62
TV      1       1999    250
 
63
TV      1       2000    150
 
64
TV      2       2000    200
 
65
select product, country_id , year, sum(profit) from t1 group by product, country_id, year with rollup;
 
66
product country_id      year    sum(profit)
 
67
Calculator      1       1999    50
 
68
Calculator      1       2000    75
 
69
Calculator      1       NULL    125
 
70
Calculator      2       2000    150
 
71
Calculator      2       NULL    150
 
72
Calculator      NULL    NULL    275
 
73
Computer        1       1999    2700
 
74
Computer        1       2000    1500
 
75
Computer        1       NULL    4200
 
76
Computer        2       2000    2700
 
77
Computer        2       NULL    2700
 
78
Computer        NULL    NULL    6900
 
79
Phone   3       2003    10
 
80
Phone   3       NULL    10
 
81
Phone   NULL    NULL    10
 
82
TV      1       1999    250
 
83
TV      1       2000    150
 
84
TV      1       NULL    400
 
85
TV      2       2000    200
 
86
TV      2       NULL    200
 
87
TV      NULL    NULL    600
 
88
NULL    NULL    NULL    7785
 
89
explain extended select product, country_id , year, sum(profit) from t1 group by product, country_id, year with rollup;
 
90
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
91
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    15      100.00  Using filesort
 
92
Warnings:
 
93
Note    1003    select `test`.`t1`.`product` AS `product`,`test`.`t1`.`country_id` AS `country_id`,`test`.`t1`.`year` AS `year`,sum(`test`.`t1`.`profit`) AS `sum(profit)` from `test`.`t1` group by `test`.`t1`.`product`,`test`.`t1`.`country_id`,`test`.`t1`.`year` with rollup
 
94
select product, country_id , sum(profit) from t1 group by product desc, country_id with rollup;
 
95
product country_id      sum(profit)
 
96
TV      1       400
 
97
TV      2       200
 
98
TV      NULL    600
 
99
Phone   3       10
 
100
Phone   NULL    10
 
101
Computer        1       4200
 
102
Computer        2       2700
 
103
Computer        NULL    6900
 
104
Calculator      1       125
 
105
Calculator      2       150
 
106
Calculator      NULL    275
 
107
NULL    NULL    7785
 
108
select product, country_id , year, sum(profit) from t1 group by product, country_id, year with rollup limit 5;
 
109
product country_id      year    sum(profit)
 
110
Calculator      1       1999    50
 
111
Calculator      1       2000    75
 
112
Calculator      1       NULL    125
 
113
Calculator      2       2000    150
 
114
Calculator      2       NULL    150
 
115
select product, country_id , year, sum(profit) from t1 group by product, country_id, year with rollup limit 3,3;
 
116
product country_id      year    sum(profit)
 
117
Calculator      2       2000    150
 
118
Calculator      2       NULL    150
 
119
Calculator      NULL    NULL    275
 
120
select product, country_id, count(*), count(distinct year) from t1 group by product, country_id;
 
121
product country_id      count(*)        count(distinct year)
 
122
Calculator      1       2       2
 
123
Calculator      2       2       1
 
124
Computer        1       3       2
 
125
Computer        2       2       1
 
126
Phone   3       1       1
 
127
TV      1       3       2
 
128
TV      2       2       1
 
129
select product, country_id, count(*), count(distinct year) from t1 group by product, country_id with rollup;
 
130
product country_id      count(*)        count(distinct year)
 
131
Calculator      1       2       2
 
132
Calculator      2       2       1
 
133
Calculator      NULL    4       2
 
134
Computer        1       3       2
 
135
Computer        2       2       1
 
136
Computer        NULL    5       2
 
137
Phone   3       1       1
 
138
Phone   NULL    1       1
 
139
TV      1       3       2
 
140
TV      2       2       1
 
141
TV      NULL    5       2
 
142
NULL    NULL    15      3
 
143
select product, country_id , year, sum(profit) from t1 group by product, country_id, year with rollup having country_id = 1;
 
144
product country_id      year    sum(profit)
 
145
Calculator      1       1999    50
 
146
Calculator      1       2000    75
 
147
Calculator      1       NULL    125
 
148
Computer        1       1999    2700
 
149
Computer        1       2000    1500
 
150
Computer        1       NULL    4200
 
151
TV      1       1999    250
 
152
TV      1       2000    150
 
153
TV      1       NULL    400
 
154
select product, country_id , year, sum(profit) from t1 group by product, country_id, year with rollup having sum(profit) > 200;
 
155
product country_id      year    sum(profit)
 
156
Calculator      NULL    NULL    275
 
157
Computer        1       1999    2700
 
158
Computer        1       2000    1500
 
159
Computer        1       NULL    4200
 
160
Computer        2       2000    2700
 
161
Computer        2       NULL    2700
 
162
Computer        NULL    NULL    6900
 
163
TV      1       1999    250
 
164
TV      1       NULL    400
 
165
TV      NULL    NULL    600
 
166
NULL    NULL    NULL    7785
 
167
select product, country_id , year, sum(profit) from t1 group by product, country_id, year with rollup having sum(profit) > 7000;
 
168
product country_id      year    sum(profit)
 
169
NULL    NULL    NULL    7785
 
170
select concat(product,':',country_id) as 'prod', concat(":",year,":") as 'year',1+1, sum(profit)/count(*) from t1 group by 1,2 with rollup;
 
171
prod    year    1+1     sum(profit)/count(*)
 
172
Calculator:1    :1999:  2       50.00000
 
173
Calculator:1    :2000:  2       75.00000
 
174
Calculator:1    NULL    2       62.50000
 
175
Calculator:2    :2000:  2       75.00000
 
176
Calculator:2    NULL    2       75.00000
 
177
Computer:1      :1999:  2       1350.00000
 
178
Computer:1      :2000:  2       1500.00000
 
179
Computer:1      NULL    2       1400.00000
 
180
Computer:2      :2000:  2       1350.00000
 
181
Computer:2      NULL    2       1350.00000
 
182
Phone:3 :2003:  2       10.00000
 
183
Phone:3 NULL    2       10.00000
 
184
TV:1    :1999:  2       125.00000
 
185
TV:1    :2000:  2       150.00000
 
186
TV:1    NULL    2       133.33333
 
187
TV:2    :2000:  2       100.00000
 
188
TV:2    NULL    2       100.00000
 
189
NULL    NULL    2       519.00000
 
190
select product, sum(profit)/count(*) from t1 group by product with rollup;
 
191
product sum(profit)/count(*)
 
192
Calculator      68.75000
 
193
Computer        1380.00000
 
194
Phone   10.00000
 
195
TV      120.00000
 
196
NULL    519.00000
 
197
select left(product,4) as prod, sum(profit)/count(*) from t1 group by prod with rollup;
 
198
prod    sum(profit)/count(*)
 
199
Calc    68.75000
 
200
Comp    1380.00000
 
201
Phon    10.00000
 
202
TV      120.00000
 
203
NULL    519.00000
 
204
select concat(product,':',country_id), 1+1, sum(profit)/count(*) from t1 group by concat(product,':',country_id) with rollup;
 
205
concat(product,':',country_id)  1+1     sum(profit)/count(*)
 
206
Calculator:1    2       62.50000
 
207
Calculator:2    2       75.00000
 
208
Computer:1      2       1400.00000
 
209
Computer:2      2       1350.00000
 
210
Phone:3 2       10.00000
 
211
TV:1    2       133.33333
 
212
TV:2    2       100.00000
 
213
NULL    2       519.00000
 
214
select product, country , year, sum(profit) from t1,t2 where t1.country_id=t2.country_id group by product, country, year with rollup;
 
215
product country year    sum(profit)
 
216
Calculator      India   2000    150
 
217
Calculator      India   NULL    150
 
218
Calculator      USA     1999    50
 
219
Calculator      USA     2000    75
 
220
Calculator      USA     NULL    125
 
221
Calculator      NULL    NULL    275
 
222
Computer        India   2000    2700
 
223
Computer        India   NULL    2700
 
224
Computer        USA     1999    2700
 
225
Computer        USA     2000    1500
 
226
Computer        USA     NULL    4200
 
227
Computer        NULL    NULL    6900
 
228
Phone   Finland 2003    10
 
229
Phone   Finland NULL    10
 
230
Phone   NULL    NULL    10
 
231
TV      India   2000    200
 
232
TV      India   NULL    200
 
233
TV      USA     1999    250
 
234
TV      USA     2000    150
 
235
TV      USA     NULL    400
 
236
TV      NULL    NULL    600
 
237
NULL    NULL    NULL    7785
 
238
select product, `sum` from (select product, sum(profit) as 'sum' from t1 group by product with rollup) as tmp where product is null;
 
239
product sum
 
240
NULL    7785
 
241
select product from t1 where exists (select product, country_id , sum(profit) from t1 as t2 where t1.product=t2.product group by product, country_id with rollup having sum(profit) > 6000);
 
242
product
 
243
Computer
 
244
Computer
 
245
Computer
 
246
Computer
 
247
Computer
 
248
select product, country_id , year, sum(profit) from t1 group by product, country_id, year having country_id is NULL;
 
249
product country_id      year    sum(profit)
 
250
select concat(':',product,':'), sum(profit),avg(profit) from t1 group by product with rollup;
 
251
concat(':',product,':') sum(profit)     avg(profit)
 
252
:Calculator:    275     68.75000
 
253
:Computer:      6900    1380.00000
 
254
:Phone: 10      10.00000
 
255
:TV:    600     120.00000
 
256
NULL    7785    519.00000
 
257
select product, country_id , year, sum(profit) from t1 group by product, country_id, year with cube;
 
258
ERROR 42000: This version of MySQL doesn't yet support 'CUBE'
 
259
explain select product, country_id , year, sum(profit) from t1 group by product, country_id, year with cube;
 
260
ERROR 42000: This version of MySQL doesn't yet support 'CUBE'
 
261
select product, country_id , year, sum(profit) from t1 group by product, country_id, year with cube union all select product, country_id , year, sum(profit) from t1 group by product, country_id, year with rollup;
 
262
ERROR 42000: This version of MySQL doesn't yet support 'CUBE'
 
263
drop table t1,t2;
 
264
CREATE TABLE t1 (i int);
 
265
INSERT INTO t1 VALUES(100);
 
266
CREATE TABLE t2 (i int);
 
267
INSERT INTO t2 VALUES (100),(200);
 
268
SELECT i, COUNT(*) FROM t1 GROUP BY i WITH ROLLUP;
 
269
i       COUNT(*)
 
270
100     1
 
271
NULL    1
 
272
SELECT t1.i, t2.i, COUNT(*) FROM t1,t2 GROUP BY t1.i,t2.i WITH ROLLUP;
 
273
i       i       COUNT(*)
 
274
100     100     1
 
275
100     200     1
 
276
100     NULL    2
 
277
NULL    NULL    2
 
278
drop table t1,t2;
 
279
CREATE TABLE user_day(
 
280
user_id INT NOT NULL,
 
281
date DATE NOT NULL,
 
282
UNIQUE INDEX user_date (user_id, date)
 
283
);
 
284
INSERT INTO user_day VALUES
 
285
(1, '2004-06-06' ),
 
286
(1, '2004-06-07' ),
 
287
(2, '2004-06-06' );
 
288
SELECT
 
289
d.date AS day,
 
290
COUNT(d.user_id) as sample,
 
291
COUNT(next_day.user_id) AS not_cancelled
 
292
FROM user_day d
 
293
LEFT JOIN user_day next_day 
 
294
ON next_day.user_id=d.user_id AND 
 
295
next_day.date= DATE_ADD( d.date, interval 1 day )
 
296
GROUP BY day;
 
297
day     sample  not_cancelled
 
298
2004-06-06      2       1
 
299
2004-06-07      1       0
 
300
SELECT
 
301
d.date AS day,
 
302
COUNT(d.user_id) as sample,
 
303
COUNT(next_day.user_id) AS not_cancelled
 
304
FROM user_day d
 
305
LEFT JOIN user_day next_day 
 
306
ON next_day.user_id=d.user_id AND 
 
307
next_day.date= DATE_ADD( d.date, interval 1 day )
 
308
GROUP BY day
 
309
WITH ROLLUP;
 
310
day     sample  not_cancelled
 
311
2004-06-06      2       1
 
312
2004-06-07      1       0
 
313
NULL    3       1
 
314
DROP TABLE user_day;
 
315
CREATE TABLE t1 (a int, b int);
 
316
INSERT INTO t1 VALUES
 
317
(1,4),
 
318
(2,2), (2,2),
 
319
(4,1), (4,1), (4,1), (4,1),
 
320
(2,1), (2,1);
 
321
SELECT SUM(b) FROM t1 GROUP BY a WITH ROLLUP;
 
322
SUM(b)
 
323
4
 
324
6
 
325
4
 
326
14
 
327
SELECT DISTINCT SUM(b) FROM t1 GROUP BY a WITH ROLLUP;
 
328
SUM(b)
 
329
4
 
330
6
 
331
14
 
332
SELECT SUM(b), COUNT(DISTINCT b) FROM t1 GROUP BY a WITH ROLLUP;
 
333
SUM(b)  COUNT(DISTINCT b)
 
334
4       1
 
335
6       2
 
336
4       1
 
337
14      3
 
338
SELECT DISTINCT SUM(b), COUNT(DISTINCT b) FROM t1 GROUP BY a WITH ROLLUP;
 
339
SUM(b)  COUNT(DISTINCT b)
 
340
4       1
 
341
6       2
 
342
14      3
 
343
SELECT SUM(b), COUNT(*) FROM t1 GROUP BY a WITH ROLLUP;
 
344
SUM(b)  COUNT(*)
 
345
4       1
 
346
6       4
 
347
4       4
 
348
14      9
 
349
SELECT DISTINCT SUM(b), COUNT(*) FROM t1 GROUP BY a WITH ROLLUP;
 
350
SUM(b)  COUNT(*)
 
351
4       1
 
352
6       4
 
353
4       4
 
354
14      9
 
355
SELECT SUM(b), COUNT(DISTINCT b), COUNT(*) FROM t1 GROUP BY a WITH ROLLUP;
 
356
SUM(b)  COUNT(DISTINCT b)       COUNT(*)
 
357
4       1       1
 
358
6       2       4
 
359
4       1       4
 
360
14      3       9
 
361
SELECT DISTINCT SUM(b), COUNT(DISTINCT b), COUNT(*) FROM t1
 
362
GROUP BY a WITH ROLLUP;
 
363
SUM(b)  COUNT(DISTINCT b)       COUNT(*)
 
364
4       1       1
 
365
6       2       4
 
366
4       1       4
 
367
14      3       9
 
368
SELECT a, sum(b) FROM t1 GROUP BY a,b WITH ROLLUP;
 
369
a       sum(b)
 
370
1       4
 
371
1       4
 
372
2       2
 
373
2       4
 
374
2       6
 
375
4       4
 
376
4       4
 
377
NULL    14
 
378
SELECT DISTINCT a, sum(b) FROM t1 GROUP BY a,b WITH ROLLUP;
 
379
a       sum(b)
 
380
1       4
 
381
2       2
 
382
2       4
 
383
2       6
 
384
4       4
 
385
NULL    14
 
386
SELECT b, a, sum(b) FROM t1 GROUP BY a,b WITH ROLLUP;
 
387
b       a       sum(b)
 
388
4       1       4
 
389
NULL    1       4
 
390
1       2       2
 
391
2       2       4
 
392
NULL    2       6
 
393
1       4       4
 
394
NULL    4       4
 
395
NULL    NULL    14
 
396
SELECT DISTINCT b,a, sum(b) FROM t1 GROUP BY a,b WITH ROLLUP;
 
397
b       a       sum(b)
 
398
4       1       4
 
399
NULL    1       4
 
400
1       2       2
 
401
2       2       4
 
402
NULL    2       6
 
403
1       4       4
 
404
NULL    4       4
 
405
NULL    NULL    14
 
406
ALTER TABLE t1 ADD COLUMN c INT;
 
407
SELECT a,b,sum(c) FROM t1 GROUP BY a,b,c WITH ROLLUP;
 
408
a       b       sum(c)
 
409
1       4       NULL
 
410
1       4       NULL
 
411
1       NULL    NULL
 
412
2       1       NULL
 
413
2       1       NULL
 
414
2       2       NULL
 
415
2       2       NULL
 
416
2       NULL    NULL
 
417
4       1       NULL
 
418
4       1       NULL
 
419
4       NULL    NULL
 
420
NULL    NULL    NULL
 
421
SELECT distinct a,b,sum(c) FROM t1 GROUP BY a,b,c WITH ROLLUP;
 
422
a       b       sum(c)
 
423
1       4       NULL
 
424
1       NULL    NULL
 
425
2       1       NULL
 
426
2       2       NULL
 
427
2       NULL    NULL
 
428
4       1       NULL
 
429
4       NULL    NULL
 
430
NULL    NULL    NULL
 
431
DROP TABLE t1;
 
432
CREATE TABLE t1 (a int, b int);
 
433
INSERT INTO t1 VALUES
 
434
(1,4),
 
435
(2,2), (2,2),
 
436
(4,1), (4,1), (4,1), (4,1),
 
437
(2,1), (2,1);
 
438
SELECT a, SUM(b) FROM t1 GROUP BY a WITH ROLLUP LIMIT 1;
 
439
a       SUM(b)
 
440
1       4
 
441
SELECT SQL_CALC_FOUND_ROWS a, SUM(b) FROM t1 GROUP BY a WITH ROLLUP LIMIT 1;
 
442
a       SUM(b)
 
443
1       4
 
444
DROP TABLE t1;
 
445
CREATE TABLE t1 (a int(11) NOT NULL);
 
446
INSERT INTO t1 VALUES (1),(2);
 
447
SELECT a, SUM(a) m FROM  t1 GROUP BY a WITH ROLLUP;
 
448
a       m
 
449
1       1
 
450
2       2
 
451
NULL    3
 
452
SELECT * FROM ( SELECT a, SUM(a) m FROM  t1 GROUP BY a WITH ROLLUP ) t2;
 
453
a       m
 
454
1       1
 
455
2       2
 
456
NULL    3
 
457
DROP TABLE t1;
 
458
set div_precision_increment= @sav_dpi;
 
459
CREATE TABLE t1 (a int(11));
 
460
INSERT INTO t1 VALUES (1),(2);
 
461
SELECT a, SUM(a), SUM(a)+1 FROM (SELECT a FROM t1 UNION select 2) d 
 
462
GROUP BY a;
 
463
a       SUM(a)  SUM(a)+1
 
464
1       1       2
 
465
2       2       3
 
466
SELECT a, SUM(a), SUM(a)+1 FROM (SELECT a FROM t1 UNION select 2) d 
 
467
GROUP BY a WITH ROLLUP;
 
468
a       SUM(a)  SUM(a)+1
 
469
1       1       2
 
470
2       2       3
 
471
NULL    3       4
 
472
SELECT a, SUM(a), SUM(a)+1 FROM (SELECT 1 a UNION select 2) d 
 
473
GROUP BY a;
 
474
a       SUM(a)  SUM(a)+1
 
475
1       1       2
 
476
2       2       3
 
477
SELECT a, SUM(a), SUM(a)+1 FROM (SELECT 1 a UNION select 2) d 
 
478
GROUP BY a WITH ROLLUP;
 
479
a       SUM(a)  SUM(a)+1
 
480
1       1       2
 
481
2       2       3
 
482
NULL    3       4
 
483
SELECT a, SUM(a), SUM(a)+1, CONCAT(SUM(a),'x'), SUM(a)+SUM(a), SUM(a)
 
484
FROM (SELECT 1 a, 2 b UNION SELECT 2,3 UNION SELECT 5,6 ) d
 
485
GROUP BY a WITH ROLLUP;
 
486
a       SUM(a)  SUM(a)+1        CONCAT(SUM(a),'x')      SUM(a)+SUM(a)   SUM(a)
 
487
1       1       2       1x      2       1
 
488
2       2       3       2x      4       2
 
489
5       5       6       5x      10      5
 
490
NULL    8       9       8x      16      8
 
491
DROP TABLE t1;
 
492
CREATE TABLE t1 (a int(11));
 
493
INSERT INTO t1 VALUES (1),(2);
 
494
SELECT a, a+1, SUM(a) FROM t1 GROUP BY a WITH ROLLUP;
 
495
a       a+1     SUM(a)
 
496
1       2       1
 
497
2       3       2
 
498
NULL    NULL    3
 
499
SELECT a+1 FROM t1 GROUP BY a WITH ROLLUP;
 
500
a+1
 
501
2
 
502
3
 
503
NULL
 
504
SELECT a+SUM(a) FROM t1 GROUP BY a WITH ROLLUP;
 
505
a+SUM(a)
 
506
2
 
507
4
 
508
NULL
 
509
SELECT a, a+1 as b FROM t1 GROUP BY a WITH ROLLUP HAVING b > 2;
 
510
a       b
 
511
2       3
 
512
SELECT a, a+1 as b FROM t1 GROUP BY a WITH ROLLUP HAVING a IS NULL;
 
513
a       b
 
514
NULL    NULL
 
515
SELECT a, a+1 as b FROM t1 GROUP BY a WITH ROLLUP HAVING b IS NULL;
 
516
a       b
 
517
NULL    NULL
 
518
SELECT IFNULL(a, 'TEST') FROM t1 GROUP BY a WITH ROLLUP;
 
519
IFNULL(a, 'TEST')
 
520
1
 
521
2
 
522
TEST
 
523
CREATE TABLE t2 (a int, b int);
 
524
INSERT INTO t2 VALUES
 
525
(1,4),
 
526
(2,2), (2,2),
 
527
(4,1), (4,1), (4,1), (4,1),
 
528
(2,1), (2,1);
 
529
SELECT a,b,SUM(b) FROM t2 GROUP BY a,b WITH ROLLUP;
 
530
a       b       SUM(b)
 
531
1       4       4
 
532
1       NULL    4
 
533
2       1       2
 
534
2       2       4
 
535
2       NULL    6
 
536
4       1       4
 
537
4       NULL    4
 
538
NULL    NULL    14
 
539
SELECT a,b,SUM(b), a+b as c FROM t2
 
540
GROUP BY a,b WITH ROLLUP HAVING c IS NULL;
 
541
a       b       SUM(b)  c
 
542
1       NULL    4       NULL
 
543
2       NULL    6       NULL
 
544
4       NULL    4       NULL
 
545
NULL    NULL    14      NULL
 
546
SELECT IFNULL(a, 'TEST'), COALESCE(b, 'TEST') FROM t2 
 
547
GROUP BY a, b WITH ROLLUP;
 
548
IFNULL(a, 'TEST')       COALESCE(b, 'TEST')
 
549
1       4
 
550
1       TEST
 
551
2       1
 
552
2       2
 
553
2       TEST
 
554
4       1
 
555
4       TEST
 
556
TEST    TEST
 
557
DROP TABLE t1,t2;
 
558
CREATE TABLE t1 (a INT(10) NOT NULL, b INT(10) NOT NULL);
 
559
INSERT INTO t1 VALUES (1, 1);
 
560
INSERT INTO t1 VALUES (1, 2);
 
561
SELECT a, b, a AS c, COUNT(*) AS count FROM t1 GROUP BY a, b, c WITH ROLLUP;
 
562
a       b       c       count
 
563
1       1       1       1
 
564
1       1       NULL    1
 
565
1       2       1       1
 
566
1       2       NULL    1
 
567
1       NULL    NULL    2
 
568
NULL    NULL    NULL    2
 
569
DROP TABLE t1;
 
570
CREATE TABLE t1 (a int(11) NOT NULL);
 
571
INSERT INTO t1 VALUES (1),(2);
 
572
SELECT * FROM (SELECT a, a + 1, COUNT(*) FROM t1 GROUP BY a WITH ROLLUP) t;
 
573
a       a + 1   COUNT(*)
 
574
1       2       1
 
575
2       3       1
 
576
NULL    NULL    2
 
577
SELECT * FROM (SELECT a, LENGTH(a), COUNT(*) FROM t1 GROUP BY a WITH ROLLUP) t;
 
578
a       LENGTH(a)       COUNT(*)
 
579
1       1       1
 
580
2       1       1
 
581
NULL    NULL    2
 
582
DROP TABLE t1;
 
583
create table t1 ( a varchar(9), b int );
 
584
insert into t1 values('a',1),(null,2);
 
585
select a, max(b) from t1 group by a with rollup;
 
586
a       max(b)
 
587
NULL    2
 
588
a       1
 
589
NULL    2
 
590
select distinct a, max(b) from t1 group by a with rollup;
 
591
a       max(b)
 
592
NULL    2
 
593
a       1
 
594
drop table t1;
 
595
create table t1 (a varchar(22) not null , b int);
 
596
insert into t1 values ("2006-07-01 21:30", 1), ("2006-07-01 23:30", 10);
 
597
select left(a,10), a, sum(b) from t1 group by 1,2 with rollup;
 
598
left(a,10)      a       sum(b)
 
599
2006-07-01      2006-07-01 21:30        1
 
600
2006-07-01      2006-07-01 23:30        10
 
601
2006-07-01      NULL    11
 
602
NULL    NULL    11
 
603
select left(a,10) x, a, sum(b) from t1 group by x,a with rollup;
 
604
x       a       sum(b)
 
605
2006-07-01      2006-07-01 21:30        1
 
606
2006-07-01      2006-07-01 23:30        10
 
607
2006-07-01      NULL    11
 
608
NULL    NULL    11
 
609
drop table t1;
 
610
CREATE TABLE t1 (a int, b int);
 
611
INSERT INTO t1 
 
612
VALUES (2,10),(3,30),(2,40),(1,10),(2,30),(1,20),(2,10);
 
613
SELECT a, SUM(b) FROM t1 GROUP BY a WITH ROLLUP;
 
614
a       SUM(b)
 
615
1       30
 
616
2       90
 
617
3       30
 
618
NULL    150
 
619
SELECT DISTINCT a, SUM(b) FROM t1 GROUP BY a WITH ROLLUP;
 
620
a       SUM(b)
 
621
1       30
 
622
2       90
 
623
3       30
 
624
NULL    150
 
625
SELECT a, b, COUNT(*) FROM t1 GROUP BY a,b WITH ROLLUP;
 
626
a       b       COUNT(*)
 
627
1       10      1
 
628
1       20      1
 
629
1       NULL    2
 
630
2       10      2
 
631
2       30      1
 
632
2       40      1
 
633
2       NULL    4
 
634
3       30      1
 
635
3       NULL    1
 
636
NULL    NULL    7
 
637
SELECT DISTINCT a, b, COUNT(*) FROM t1 GROUP BY a,b WITH ROLLUP;
 
638
a       b       COUNT(*)
 
639
1       10      1
 
640
1       20      1
 
641
1       NULL    2
 
642
2       10      2
 
643
2       30      1
 
644
2       40      1
 
645
2       NULL    4
 
646
3       30      1
 
647
3       NULL    1
 
648
NULL    NULL    7
 
649
SELECT 'x', a, SUM(b) FROM t1 GROUP BY 1,2 WITH ROLLUP;
 
650
x       a       SUM(b)
 
651
x       1       30
 
652
x       2       90
 
653
x       3       30
 
654
x       NULL    150
 
655
NULL    NULL    150
 
656
SELECT DISTINCT 'x', a, SUM(b) FROM t1 GROUP BY 1,2 WITH ROLLUP;
 
657
x       a       SUM(b)
 
658
x       1       30
 
659
x       2       90
 
660
x       3       30
 
661
x       NULL    150
 
662
NULL    NULL    150
 
663
SELECT DISTINCT 'x', a, SUM(b) FROM t1 GROUP BY 1,2 WITH ROLLUP;
 
664
x       a       SUM(b)
 
665
x       1       30
 
666
x       2       90
 
667
x       3       30
 
668
x       NULL    150
 
669
NULL    NULL    150
 
670
DROP TABLE t1;
 
671
CREATE TABLE t1(id int, type char(1));
 
672
INSERT INTO t1 VALUES
 
673
(1,"A"),(2,"C"),(3,"A"),(4,"A"),(5,"B"),
 
674
(6,"B"),(7,"A"),(8,"C"),(9,"A"),(10,"C");
 
675
CREATE VIEW v1 AS SELECT * FROM t1;
 
676
SELECT type FROM t1 GROUP BY type WITH ROLLUP;
 
677
type
 
678
A
 
679
B
 
680
C
 
681
NULL
 
682
SELECT type FROM v1 GROUP BY type WITH ROLLUP;
 
683
type
 
684
A
 
685
B
 
686
C
 
687
NULL
 
688
EXPLAIN SELECT type FROM v1 GROUP BY type WITH ROLLUP;
 
689
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
690
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    10      Using filesort
 
691
DROP VIEW v1;
 
692
DROP TABLE t1;
 
693
CREATE TABLE t1 (a int(11) NOT NULL);
 
694
INSERT INTO t1 VALUES (1),(2);
 
695
CREATE VIEW v1 AS
 
696
SELECT a, LENGTH(a), COUNT(*) FROM t1 GROUP BY a WITH ROLLUP;
 
697
DESC v1;
 
698
Field   Type    Null    Key     Default Extra
 
699
a       bigint(11)      YES             NULL    
 
700
LENGTH(a)       bigint(10)      YES             NULL    
 
701
COUNT(*)        bigint(21)      NO              0       
 
702
SELECT * FROM v1;
 
703
a       LENGTH(a)       COUNT(*)
 
704
1       1       1
 
705
2       1       1
 
706
NULL    NULL    2
 
707
DROP VIEW v1;
 
708
DROP TABLE t1;
 
709
CREATE TABLE t1 (a int, KEY (a));
 
710
INSERT INTO t1 VALUES (3), (1), (4), (1), (3), (1), (1);
 
711
SELECT * FROM (SELECT a, SUM(a) FROM t1 GROUP BY a WITH ROLLUP) as t;
 
712
a       SUM(a)
 
713
1       4
 
714
3       6
 
715
4       4
 
716
NULL    14
 
717
DROP TABLE t1;
 
718
#
 
719
# Bug#31095: Unexpected NULL constant caused server crash.
 
720
#
 
721
create table t1(a int);
 
722
insert into t1 values (1),(2),(3);
 
723
select count(a) from t1 group by null with rollup;
 
724
count(a)
 
725
3
 
726
3
 
727
drop table t1;
 
728
##############################################################
 
729
CREATE TABLE t1(a INT);
 
730
INSERT INTO t1 VALUES(0);
 
731
SELECT 1 FROM t1 GROUP BY (DATE(NULL)) WITH ROLLUP;
 
732
1
 
733
1
 
734
1
 
735
DROP TABLE t1;
 
736
End of 5.0 tests