mirror of
https://github.com/MariaDB/server.git
synced 2025-01-19 05:22:25 +01:00
6a2ef5577c
Item_sum_count_distinct, and deploy Unique for use with COUNT(DISTINCT) if there is no blob column in the list of DISTINCT arguments.
203 lines
4.5 KiB
Text
203 lines
4.5 KiB
Text
DROP TABLE IF EXISTS t1, t2;
|
|
CREATE TABLE t1 (
|
|
id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
|
|
gender CHAR(1),
|
|
name VARCHAR(20)
|
|
);
|
|
SELECT SUM(DISTINCT LENGTH(name)) s1 FROM t1;
|
|
s1
|
|
NULL
|
|
INSERT INTO t1 (gender, name) VALUES (NULL, NULL);
|
|
INSERT INTO t1 (gender, name) VALUES (NULL, NULL);
|
|
INSERT INTO t1 (gender, name) VALUES (NULL, NULL);
|
|
SELECT SUM(DISTINCT LENGTH(name)) s1 FROM t1;
|
|
s1
|
|
NULL
|
|
INSERT INTO t1 (gender, name) VALUES ('F', 'Helen'), ('F', 'Anastasia'),
|
|
('F', 'Katherine'), ('F', 'Margo'), ('F', 'Magdalene'), ('F', 'Mary');
|
|
CREATE TABLE t2 SELECT name FROM t1;
|
|
SELECT (SELECT SUM(DISTINCT LENGTH(name)) FROM t1) FROM t2;
|
|
(SELECT SUM(DISTINCT LENGTH(name)) FROM t1)
|
|
18
|
|
18
|
|
18
|
|
18
|
|
18
|
|
18
|
|
18
|
|
18
|
|
18
|
|
DROP TABLE t2;
|
|
INSERT INTO t1 (gender, name) VALUES ('F', 'Eva'), ('F', 'Sofia'),
|
|
('F', 'Sara'), ('F', 'Golda'), ('F', 'Toba'), ('F', 'Victory'),
|
|
('F', 'Faina'), ('F', 'Miriam'), ('F', 'Beki'), ('F', 'America'),
|
|
('F', 'Susan'), ('F', 'Glory'), ('F', 'Priscilla'), ('F', 'Rosmary'),
|
|
('F', 'Rose'), ('F', 'Margareth'), ('F', 'Elizabeth'), ('F', 'Meredith'),
|
|
('F', 'Julie'), ('F', 'Xenia'), ('F', 'Zena'), ('F', 'Olga'),
|
|
('F', 'Brunhilda'), ('F', 'Nataly'), ('F', 'Lara'), ('F', 'Svetlana'),
|
|
('F', 'Grethem'), ('F', 'Irene');
|
|
SELECT
|
|
SUM(DISTINCT LENGTH(name)) s1,
|
|
SUM(DISTINCT SUBSTRING(NAME, 1, 3)) s2,
|
|
SUM(DISTINCT LENGTH(SUBSTRING(name, 1, 4))) s3
|
|
FROM t1;
|
|
s1 s2 s3
|
|
42 0 7
|
|
SELECT
|
|
SUM(DISTINCT LENGTH(g1.name)) s1,
|
|
SUM(DISTINCT SUBSTRING(g2.name, 1, 3)) s2,
|
|
SUM(DISTINCT LENGTH(SUBSTRING(g3.name, 1, 4))) s3
|
|
FROM t1 g1, t1 g2, t1 g3;
|
|
s1 s2 s3
|
|
42 0 7
|
|
SELECT
|
|
SUM(DISTINCT LENGTH(g1.name)) s1,
|
|
SUM(DISTINCT SUBSTRING(g2.name, 1, 3)) s2,
|
|
SUM(DISTINCT LENGTH(SUBSTRING(g3.name, 1, 4))) s3
|
|
FROM t1 g1, t1 g2, t1 g3 GROUP BY LENGTH(SUBSTRING(g3.name, 5, 10));
|
|
s1 s2 s3
|
|
42 0 NULL
|
|
42 0 7
|
|
42 0 4
|
|
42 0 4
|
|
42 0 4
|
|
42 0 4
|
|
42 0 4
|
|
SELECT SQL_BUFFER_RESULT
|
|
SUM(DISTINCT LENGTH(name)) s1,
|
|
SUM(DISTINCT SUBSTRING(NAME, 1, 3)) s2,
|
|
SUM(DISTINCT LENGTH(SUBSTRING(name, 1, 4))) s3
|
|
FROM t1;
|
|
s1 s2 s3
|
|
42 0 7
|
|
SELECT SQL_BUFFER_RESULT
|
|
SUM(DISTINCT LENGTH(g1.name)) s1,
|
|
SUM(DISTINCT SUBSTRING(g2.name, 1, 3)) s2,
|
|
SUM(DISTINCT LENGTH(SUBSTRING(g3.name, 1, 4))) s3
|
|
FROM t1 g1, t1 g2, t1 g3 GROUP BY LENGTH(SUBSTRING(g3.name, 5, 10));
|
|
s1 s2 s3
|
|
42 0 NULL
|
|
42 0 7
|
|
42 0 4
|
|
42 0 4
|
|
42 0 4
|
|
42 0 4
|
|
42 0 4
|
|
SET @l=1;
|
|
UPDATE t1 SET name=CONCAT(name, @l:=@l+1);
|
|
SELECT SUM(DISTINCT RIGHT(name, 1)) FROM t1;
|
|
SUM(DISTINCT RIGHT(name, 1))
|
|
45
|
|
SELECT SUM(DISTINCT id) FROM t1;
|
|
SUM(DISTINCT id)
|
|
703
|
|
SELECT SUM(DISTINCT id % 11) FROM t1;
|
|
SUM(DISTINCT id % 11)
|
|
55
|
|
DROP TABLE t1;
|
|
CREATE TABLE t1 (id INTEGER);
|
|
CREATE TABLE t2 (id INTEGER);
|
|
INSERT INTO t1 (id) VALUES (1), (1), (1),(1);
|
|
INSERT INTO t1 (id) SELECT id FROM t1;
|
|
/* 8 */
|
|
INSERT INTO t1 (id) SELECT id FROM t1;
|
|
/* 12 */
|
|
INSERT INTO t1 (id) SELECT id FROM t1;
|
|
/* 16 */
|
|
INSERT INTO t1 (id) SELECT id FROM t1;
|
|
/* 20 */
|
|
INSERT INTO t1 (id) SELECT id FROM t1;
|
|
/* 24 */
|
|
INSERT INTO t1 SELECT id+1 FROM t1;
|
|
INSERT INTO t1 SELECT id+2 FROM t1;
|
|
INSERT INTO t1 SELECT id+4 FROM t1;
|
|
INSERT INTO t1 SELECT id+8 FROM t1;
|
|
INSERT INTO t1 SELECT id+16 FROM t1;
|
|
INSERT INTO t1 SELECT id+32 FROM t1;
|
|
INSERT INTO t1 SELECT id+64 FROM t1;
|
|
INSERT INTO t1 SELECT id+128 FROM t1;
|
|
INSERT INTO t1 SELECT id+256 FROM t1;
|
|
INSERT INTO t1 SELECT id+512 FROM t1;
|
|
SELECT AVG(DISTINCT id) FROM t1 GROUP BY id % 13;
|
|
AVG(DISTINCT id)
|
|
513.5000
|
|
508.0000
|
|
509.0000
|
|
510.0000
|
|
511.0000
|
|
512.0000
|
|
513.0000
|
|
514.0000
|
|
515.0000
|
|
516.0000
|
|
517.0000
|
|
511.5000
|
|
512.5000
|
|
SELECT SUM(DISTINCT id)/COUNT(DISTINCT id) FROM t1 GROUP BY id % 13;
|
|
SUM(DISTINCT id)/COUNT(DISTINCT id)
|
|
513.50000
|
|
508.00000
|
|
509.00000
|
|
510.00000
|
|
511.00000
|
|
512.00000
|
|
513.00000
|
|
514.00000
|
|
515.00000
|
|
516.00000
|
|
517.00000
|
|
511.50000
|
|
512.50000
|
|
INSERT INTO t1 SELECT id+1024 FROM t1;
|
|
INSERT INTO t1 SELECT id+2048 FROM t1;
|
|
INSERT INTO t1 SELECT id+4096 FROM t1;
|
|
INSERT INTO t1 SELECT id+8192 FROM t1;
|
|
INSERT INTO t2 SELECT id FROM t1 ORDER BY id*rand();
|
|
SELECT SUM(DISTINCT id) sm FROM t1;
|
|
sm
|
|
134225920
|
|
SELECT SUM(DISTINCT id) sm FROM t2;
|
|
sm
|
|
134225920
|
|
SELECT SUM(DISTINCT id) sm FROM t1 group by id % 13;
|
|
sm
|
|
10327590
|
|
10328851
|
|
10330112
|
|
10331373
|
|
10332634
|
|
10317510
|
|
10318770
|
|
10320030
|
|
10321290
|
|
10322550
|
|
10323810
|
|
10325070
|
|
10326330
|
|
SET max_heap_table_size=16384;
|
|
SHOW variables LIKE 'max_heap_table_size';
|
|
Variable_name Value
|
|
max_heap_table_size 16384
|
|
SELECT SUM(DISTINCT id) sm FROM t1;
|
|
sm
|
|
134225920
|
|
SELECT SUM(DISTINCT id) sm FROM t2;
|
|
sm
|
|
134225920
|
|
SELECT SUM(DISTINCT id) sm FROM t1 GROUP BY id % 13;
|
|
sm
|
|
10327590
|
|
10328851
|
|
10330112
|
|
10331373
|
|
10332634
|
|
10317510
|
|
10318770
|
|
10320030
|
|
10321290
|
|
10322550
|
|
10323810
|
|
10325070
|
|
10326330
|
|
DROP TABLE t1;
|
|
DROP TABLE t2;
|