Я пытаюсь объединить следующие два оператора в один оператор SELECT, чтобы я мог вставлять возвращаемые значения в одну и ту же строку с одним выражением.
SELECT ROUND(AVG(pressure),1) FROM rawinput WHERE timestamp >= SUBDATE(timestamp(now()), INTERVAL 1 HOUR);
SELECT ROUND((SELECT AVG(hourly_average_pressure) FROM hour_numbers WHERE timestamp >= CURTIME() - INTERVAL 1 HOUR)-(SELECT AVG(hourly_average_pressure) FROM hour_numbers WHERE timestamp >= CURTIME() - INTERVAL 2 HOUR AND timestamp < CURTIME() - INTERVAL 1 HOUR),1);
Я уже пробовал форматировать, как показано ниже (в основном добавляя скобки вокруг обоих операторов SELECT и заменяя запятую запятой), но я получил синтаксическую ошибку. Это единственный способ сделать это с помощью UNION ALL или я что-то упустил в формате? Спасибо за помощь.
(SELECT ROUND(AVG(pressure),1) FROM rawinput WHERE timestamp >=SUBDATE(timestamp(now()), INTERVAL 1 HOUR)), (SELECT ROUND((SELECT AVG(hourly_average_pressure) FROM hour_numbers WHERE timestamp >= CURTIME() - INTERVAL 1 HOUR)-(SELECT AVG(hourly_average_pressure) FROM hour_numbers WHERE timestamp >= CURTIME() - INTERVAL 2 HOUR AND timestamp < CURTIME() - INTERVAL 1 HOUR),1));
Если вы правильно отформатируете свой код, легко увидеть, что вам не хватает SELECT
перед вашим кодом.
(
SELECT ROUND(AVG(pressure),1)
FROM rawinput
WHERE timestamp >=SUBDATE(timestamp(now()), INTERVAL 1 HOUR)
)
, (
SELECT ROUND((SELECT AVG(hourly_average_pressure) FROM hour_numbers WHERE timestamp >= CURTIME() - INTERVAL 1 HOUR)-(SELECT AVG(hourly_average_pressure)
FROM hour_numbers
WHERE timestamp >= CURTIME() - INTERVAL 2 HOUR AND timestamp < CURTIME() - INTERVAL 1 HOUR),1)
);
С помощью SELECT
SELECT (
SELECT ROUND(AVG(pressure),1)
FROM rawinput
WHERE timestamp >=SUBDATE(timestamp(now()), INTERVAL 1 HOUR)
)
, (
SELECT ROUND((
SELECT AVG(hourly_average_pressure)
FROM hour_numbers
WHERE timestamp >= CURTIME() - INTERVAL 1 HOUR
) - (
SELECT AVG(hourly_average_pressure)
FROM hour_numbers
WHERE timestamp >= CURTIME() - INTERVAL 2 HOUR AND timestamp < CURTIME() - INTERVAL 1 HOUR
), 1)
);