In order to use sort-by you need to provide an ordering or your priority values. You could implement a custom comparator to compare your maps or define a keyfn for sort-by that calculate the key used for sorting. The solution with keyfn is below. Using just the keyfn return a comparable value that matches your requirements is much easier than implementing comparator. You might want to take a look at Comparators Guide.
We start defining a function to convert a string priority into its numeric representation:
(let [priorities {"Medicore" 0
"Enormous" 1
"Weeny" 2}]
(defn priority->num [p]
(if-let [num (priorities p)]
num
(throw (IllegalArgumentException. (str "Unknown priority: " p))))))
(priority->num "Enormous")
;; => 1
Now we need to calculate max priority for each map:
(defn max-priority-num [m]
(->> m
(vals)
(map (comp priority->num :priority))
(apply max)))
(max-priority-num {:1 {:priority "Medicore" :somekey "SomeValue"}
:2 {:priority "Enormous" :somekey "SomeValue"}
:3 {:priority "Weeny" :somekey "SomeValue"}})
;; => 2
Now we can finally use sort-by:
(def m1 {:1 {:priority "Medicore" :somekey "SomeValue"}
:2 {:priority "Medicore" :somekey "SomeValue"}
:3 {:priority "Weeny" :somekey "SomeValue"}})
(def m2 {:1 {:priority "Medicore" :somekey "SomeValue"}
:2 {:priority "Enormous" :somekey "SomeValue"}
:3 {:priority "Weeny" :somekey "SomeValue"}})
(def m3 {:1 {:priority "Medicore" :somekey "SomeValue"}
:2 {:priority "Medicore" :somekey "SomeValue"}
:3 {:priority "Medicore" :somekey "SomeValue"}})
(sort-by max-priority-num [m1 m2 m3])
;; =>
({:1 {:priority "Medicore", :somekey "SomeValue"},
:2 {:priority "Medicore", :somekey "SomeValue"},
:3 {:priority "Medicore", :somekey "SomeValue"}}
{:1 {:priority "Medicore", :somekey "SomeValue"},
:2 {:priority "Medicore", :somekey "SomeValue"},
:3 {:priority "Weeny", :somekey "SomeValue"}}
{:1 {:priority "Medicore", :somekey "SomeValue"},
:2 {:priority "Enormous", :somekey "SomeValue"},
:3 {:priority "Weeny", :somekey "SomeValue"}})