Question

Is it possible to write these sort of queries in datomic?

  • find the name of the oldest kid
  • find the person with the lowest body-mass index (weight / height)
Was it helpful?

Solution

[:find (max ?tuple) :where 
    [?k :kid/age ?age] 
    [?k :kid/name ?name] 
    [(vector ?age ?name) ?tuple]

Note:

  • the order of attributes in expression (vector ?age ?name) matters

  • the query returns single result while we might expect a collection because there may be many kids of age that is the maximum in the set. You can use (max n ?tuple) to achieve that.

See also the Aggregates Returning Collections section in http://docs.datomic.com/query.html

If you have something more specific in mind, provide more details in the question and include your schema.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top