There are two different restrictions.
First, only examination rows from academic year $2014$ should participate in the calculation.
That is a row-level condition, so it belongs in $\mathrm{WHERE}$.
$\mathrm{WHERE\ ExamDate\ BETWEEN}\ \text{'2014-04-01'}\ \mathrm{AND}\ \text{'2015-03-31'}$
After those rows are selected, they are grouped by class:
$\mathrm{GROUP\ BY\ ClassName}$
Then the average is calculated for each group. We retain only groups whose average is at least 600:
$\mathrm{HAVING\ AVG(Score)}\geq 600$
The conceptual flow is:
$\mathrm{WHERE}$ $\rightarrow$ $\mathrm{GROUP\ BY}$ $\rightarrow$ $\mathrm{AVG}$ $\rightarrow$ $\mathrm{HAVING}$
Option A incorrectly includes examination records from all three years.
Option C applies $\mathrm{Score}\geq 600$ as if $\mathrm{Score}$ had one value for the entire group.
Option D first discards all individual scores below $600$, which changes the average itself.
For eg,

So, Answer : $\boxed{\mathrm{B}}$