Предположим, у меня есть 2 таблицы: Таблица device
представляет собой набор измерительных приборов, таблица data
представляет собой набор значений различных типов, измеренных устройствами.Sustract два запроса из того же стола
Table data = (no, id,value_type,value, dayhour) no is PK, id refer to table device
Table device = (id, name) id is PK
Я в настоящее время есть запрос, который будет получать сумму всех значений конкретного value_type
, порожденного id
на определенную дату, что-то вроде:
SELECT SUM(cast(a.value as int)),b.name FROM data a INNER JOIN device b
ON a.id=b.id
AND a.id=1
AND a.value_type=2
AND date(a.dayhour)='2015-12-12'
GROUP BY b.name
Запрос работает без проблем. Теперь я хочу учесть сумму разных типов значений. То, что я сейчас делаю, это два запроса: один для получения суммы для value_type
2 и другой для суммы для value_type
3, а затем выполнения вычитания в процессе верхнего уровня.
Однако, я хотел бы сделать это с помощью одного запроса, что-то вроде запрос, который будет получать один столбец с суммой value_type
2, другой с суммой value_type
3 и третий с вычитанием из них 2 колонны.
Просьба указать правильные определения таблиц: что вы получаете с '\ d tbl' в psql или исходных сценариях CREATE TABLE. Кроме того, как * always *: ваша версия Postgres. –