I don't think ML has the `where` clause. Haskell got it from Miranda, which got it from SASL, which got it from ISWIM.
I always think that let ... in ... can also use where. My mistake.
A brief skim over the revised definition of Standard ML indicates that it was abandoned at some point. I've no idea if Caml or OCaml kept it.
That said, I'm reasonably sure that the syntactic construct (insofar is it is used in programming languages) originated with the ISWIM introduced in this paper, which was rather influential in its day, perhaps especially in the functional programming community.