D. Richard Hipp wrote:
> I'm rewriting the aggregate function processing in SQLite
> (so that it runs faster and uses less memory) and I want to
> make sure I get it right.  In particular, I want to make sure
> that SQLite handles NULLs in GROUP BY values the same as
> other database engines.
> 
> Can I get some volunteers to run the SQL shown below on
> various other SQL database engines and tell me what the output is?
> 
>    CREATE TABLE t1(a INTEGER, b INTEGER, c INTEGER);
>    INSERT INTO t1 VALUES(1,2,1);
>    INSERT INTO t1 VALUES(NULL,2,2);
>    INSERT INTO t1 VALUES(1,NULL,4);
>    INSERT INTO t1 VALUES(NULL,NULL,8);
>    INSERT INTO t1 SELECT * FROM t1;
>    SELECT a, b, sum(c) FROM t1 GROUP BY a, b ORDER BY 3;
> 
> Thanks.
test=# select version();
                           version                           
-------------------------------------------------------------
 PostgreSQL 7.2.3 on i686-pc-linux-gnu, compiled by GCC 2.96
(1 row)

test=# CREATE TABLE t1(a INTEGER, b INTEGER, c INTEGER);
  INSERT INTO t1 VALUES(1,2,1);
   INSERT INTO t1 VALUES(NULL,2,2);
   INSERT INTO t1 VALUES(1,NULL,4);
   INSERT INTO t1 VALUES(NULL,NULL,8);
   INSERT INTO t1 SELECT * FROM t1; 
   SELECT a, b, sum(c) FROM t1 GROUP BY a, b ORDER BY 3;
CREATE
test=#    INSERT INTO t1 VALUES(1,2,1);
INSERT 1229984 1
test=#    INSERT INTO t1 VALUES(NULL,2,2);
INSERT 1229985 1
test=#    INSERT INTO t1 VALUES(1,NULL,4);
INSERT 1229986 1
test=#    INSERT INTO t1 VALUES(NULL,NULL,8);
INSERT 1229987 1
test=#    INSERT INTO t1 SELECT * FROM t1; 
INSERT 0 4
test=#    SELECT a, b, sum(c) FROM t1 GROUP BY a, b ORDER BY 3;
 a | b | sum 
---+---+-----
 1 | 2 |   2
   | 2 |   4
 1 |   |   8
   |   |  16
(4 rows)

reid

Reply via email to