opaleye-sqlite- An SQL-generating DSL targeting SQLite

Safe HaskellNone



Perform aggregations on query results.



aggregate :: Aggregator a b -> Query a -> Query b Source

Given a Query producing rows of type a and an Aggregator accepting rows of type a, apply the aggregator to the results of the query.

groupBy :: Aggregator (Column a) (Column a) Source

Group the aggregation by equality on the input to groupBy.

sum :: Aggregator (Column a) (Column a) Source

Sum all rows in a group.

count :: Aggregator (Column a) (Column PGInt8) Source

Count the number of non-null rows in a group.

max :: PGOrd a => Aggregator (Column a) (Column a) Source

Maximum of a group

min :: PGOrd a => Aggregator (Column a) (Column a) Source

Maximum of a group

data Aggregator a b Source

An Aggregator takes a collection of rows of type a, groups them, and transforms each group into a single row of type b. This corresponds to aggregators using GROUP BY in SQL.

An Aggregator corresponds closely to a Fold from the foldl package. Whereas an Aggregator a b takes each group of type a to a single row of type b, a Fold a b takes a list of a and returns a single row of type b.