I was going to come back to this point and say, sorry I haven’t managed, but then I had a random bout of inspiration…
I’m not going to say it is flawless and probably it requires better testing, so here’s me saying, try it!
#+BEGIN_QUERY
{:title [:h3 "⚡️ Lopend"]
:query [:find ?project (count ?b) (sum ?count) ;count ?b is required to show the correct sum of ?count
:keys project block taken ;define keys to use in the view below
:where
[?t :block/name "taskcount"] ;page named taskcount
[?p :block/tags ?t] ;get all pages tagged with taskcount
[?p :block/journal? false] ;that aren't journals
[?p :block/original-name ?project] ;put the original page name in variable ?project
[?b :block/page ?p] ;get blocks on the found pages
;Anything above this line can be edited to fit what you need to find in terms of a project name and related tasks!
(or
(and
[?b :block/marker "TODO"] ;block is a task
[(* 1 1) ?count] ;set count to 1
)
(and
(not [?b :block/marker "TODO"]) ;block is not a task
[(* 0 1) ?count] ;set count to zero
)
)
]
;Use of :view to display our result in a table
:view (fn [rows] [:table
[:thead [:tr [:th "Project"] [:th "Tasks"] ] ]
[:tbody (for [r rows] [:tr
[:td [:a {:href (str "#/page/" (clojure.string/replace (get-in r [:project]) "/" "%2F"))} (get-in r [:project])] ]
[:td (get-in r [:taken]) ]
])]
])
}
#+END_QUERY
Let me know how it works out. Or if you need any help adjusting the query for your needs.