aggregate.js 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. import { Column } from "../../column.js";
  2. import { is } from "../../entity.js";
  3. import { sql } from "../sql.js";
  4. function count(expression) {
  5. return sql`count(${expression || sql.raw("*")})`.mapWith(Number);
  6. }
  7. function countDistinct(expression) {
  8. return sql`count(distinct ${expression})`.mapWith(Number);
  9. }
  10. function avg(expression) {
  11. return sql`avg(${expression})`.mapWith(String);
  12. }
  13. function avgDistinct(expression) {
  14. return sql`avg(distinct ${expression})`.mapWith(String);
  15. }
  16. function sum(expression) {
  17. return sql`sum(${expression})`.mapWith(String);
  18. }
  19. function sumDistinct(expression) {
  20. return sql`sum(distinct ${expression})`.mapWith(String);
  21. }
  22. function max(expression) {
  23. return sql`max(${expression})`.mapWith(is(expression, Column) ? expression : String);
  24. }
  25. function min(expression) {
  26. return sql`min(${expression})`.mapWith(is(expression, Column) ? expression : String);
  27. }
  28. export {
  29. avg,
  30. avgDistinct,
  31. count,
  32. countDistinct,
  33. max,
  34. min,
  35. sum,
  36. sumDistinct
  37. };
  38. //# sourceMappingURL=aggregate.js.map