olap for sql non-olap engines / and other tools
$ npm install sql-toolsTransfor a SQL sentence in a SQL with totals.
Uses a list of field definition with the form:
| attribute | mandatory | use |
|---|---|---|
| name | yes | name of the field in the database |
| place | yes | 'data' if must be added, 'left' or 'top' if it must apear in the GROUP BY clausule |
| aggLabel | for pivot | text to insert in the added rows |
| aggExp | no | the expression when is different to SUM(x) |
var olap = require('sql-tools').olap;
var varsDef=[
{name: "zone", place:"left", aggLabel:"=SUM="},
{name: "kind", place:"left"},
{name: "sales", place:"data"},
{name: "calif", place:"data", aggExp:"min(calif)"}
];
var sql_total=olap.cube("select * from sales", 'zone', varsDef);
console.log(sql_total);
/*
WITH "olap cube" AS (
select * from sales
) SELECT * FROM "olap cube"
UNION SELECT '=SUM=', kind, SUM(sales), min(calif)
FROM "olap cube"
GROUP BY kind
*/.............................

