@@ -17,46 +17,53 @@ describe('Test 942 - Duplicate aggregate functions return different values', fun
1717
1818 it ( 'A) Two identical SUM aggregates without rownum should return same value' , function ( ) {
1919 alasql ( 'CREATE TABLE test (population number)' ) ;
20- alasql ( " INSERT INTO test VALUES (100), (200), (300)" ) ;
21-
20+ alasql ( ' INSERT INTO test VALUES (100), (200), (300)' ) ;
21+
2222 var res = alasql ( 'SELECT sum(population) as val1, sum(population) as val2 FROM test' ) ;
23-
23+
2424 assert . deepEqual ( res , [ { val1 : 600 , val2 : 600 } ] ) ;
2525 assert . strictEqual ( res [ 0 ] . val1 , res [ 0 ] . val2 , 'val1 and val2 should be equal' ) ;
26-
26+
2727 alasql ( 'DROP TABLE test' ) ;
2828 } ) ;
2929
3030 it ( 'B) Two identical SUM aggregates with rownum should return same value' , function ( ) {
3131 alasql ( 'CREATE TABLE test (city string, price number, people number, population number)' ) ;
32- alasql ( "INSERT INTO test VALUES ('Rome',10,1,2863223),('Paris',20,1,2249975),('Berlin',30,1,3517424), ('Madrid',40,1,3041579)" ) ;
33-
34- var res = alasql ( 'SELECT sum(population) as val3, sum(population) as val4, rownum() as rownum FROM test' ) ;
35-
32+ alasql (
33+ "INSERT INTO test VALUES ('Rome',10,1,2863223),('Paris',20,1,2249975),('Berlin',30,1,3517424), ('Madrid',40,1,3041579)"
34+ ) ;
35+
36+ var res = alasql (
37+ 'SELECT sum(population) as val3, sum(population) as val4, rownum() as rownum FROM test'
38+ ) ;
39+
3640 assert . strictEqual ( res [ 0 ] . val3 , res [ 0 ] . val4 , 'val3 and val4 should be equal' ) ;
3741 assert . strictEqual ( res [ 0 ] . val3 , 11672201 , 'val3 should be 11672201' ) ;
3842 assert . strictEqual ( res [ 0 ] . val4 , 11672201 , 'val4 should be 11672201' ) ;
39-
43+
4044 alasql ( 'DROP TABLE test' ) ;
4145 } ) ;
4246
4347 it ( 'C) Multiple identical aggregates in complex query' , function ( ) {
4448 alasql ( 'CREATE TABLE test (city string, price number, people number, population number)' ) ;
45- alasql ( "INSERT INTO test VALUES ('Rome',10,1,2863223),('Paris',20,1,2249975),('Berlin',30,1,3517424), ('Madrid',40,1,3041579)" ) ;
46-
47- var sql = "SELECT " +
48- "CASE WHEN sum(people)=0 THEN 0 ELSE (sum(cast(price as float)) / sum(cast(people as float))) END as val1, " +
49- "CASE WHEN sum(population)=0 THEN 0 ELSE (sum(cast(price as float)) / sum(cast(population as float))) END as val2, " +
50- "sum(population) as val3, " +
51- "sum(population) as val4, " +
52- "rownum() as rownum " +
53- "FROM test" ;
54-
49+ alasql (
50+ "INSERT INTO test VALUES ('Rome',10,1,2863223),('Paris',20,1,2249975),('Berlin',30,1,3517424), ('Madrid',40,1,3041579)"
51+ ) ;
52+
53+ var sql =
54+ 'SELECT ' +
55+ 'CASE WHEN sum(people)=0 THEN 0 ELSE (sum(cast(price as float)) / sum(cast(people as float))) END as val1, ' +
56+ 'CASE WHEN sum(population)=0 THEN 0 ELSE (sum(cast(price as float)) / sum(cast(population as float))) END as val2, ' +
57+ 'sum(population) as val3, ' +
58+ 'sum(population) as val4, ' +
59+ 'rownum() as rownum ' +
60+ 'FROM test' ;
61+
5562 var res = alasql ( sql ) ;
56-
63+
5764 assert . strictEqual ( res [ 0 ] . val3 , res [ 0 ] . val4 , 'val3 and val4 should be equal' ) ;
5865 assert . strictEqual ( res [ 0 ] . val3 , 11672201 , 'val3 should be the sum of all populations' ) ;
59-
66+
6067 alasql ( 'DROP TABLE test' ) ;
6168 } ) ;
6269} ) ;
0 commit comments