Допустим, у меня есть 2 таблицы: таблица device
— набор измерительных приборов, таблица data
— набор значений разных типов, измеряемых приборами.
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
скриптами. Кроме того, как всегда: ваша версия Postgres. - person Erwin Brandstetter   schedule 10.02.2015