Closed xitology closed 3 years ago
using FunSQL: SQLTable, From, Select, Join, Where, Group, Fun, Get, Agg, render person = SQLTable(:person, :person_id, :year_of_birth, :location_id) visit_occurrence = SQLTable(:visit_occurrence, :visit_occurrence_id, :person_id, :visit_start_date, :visit_end_date) q = From(person) |> Join(:visit_group => From(visit_occurrence) |> Group(Get.person_id), on = Get.person_id .== Get.visit_group.person_id) |> Where(Agg.count(over = Get.visit_group) .>= 2) |> Select(Get.person_id, Agg.count(over = Get.visit_group)) print(render(q)) #=> SELECT "person_1"."person_id", "visit_group_1"."count_2" AS "count" FROM "person" AS "person_1" JOIN ( SELECT "visit_occurrence_1"."person_id", COUNT(*) AS "count_1", COUNT(*) AS "count_2" FROM "visit_occurrence" AS "visit_occurrence_1" GROUP BY "visit_occurrence_1"."person_id" ) AS "visit_group_1" ON ("person_1"."person_id" = "visit_group_1"."person_id") WHERE ("visit_group_1"."count_1" >= 2) =#
Fixed in 5db345e.