Você deseja usar
GROUP_CONCAT
e SUBSTRING_INDEX
:SUBSTRING_INDEX( GROUP_CONCAT(CAST(open AS CHAR) ORDER BY datetime), ',', 1 ) AS open
SUBSTRING_INDEX( GROUP_CONCAT(CAST(close AS CHAR) ORDER BY datetime DESC), ',', 1 ) AS close
Isso evita subconsultas caras e geralmente acho mais eficiente para esse problema específico.
Confira as páginas de manual de ambas as funções para entender seus argumentos ou visite este artigo que inclui um exemplo de como fazer conversão de timeframe no MySQL para mais explicações.