SQL ORACLE, Отличия - PullRequest
       9

SQL ORACLE, Отличия

0 голосов
/ 10 апреля 2019

Вот код

 select sum(post_sales) from post_sales;

Дает 50 000

select sum(sales) from sales;

Дает 100 000

Я хочу вычесть 100 000 - 50 000

Каков синтаксис этого в Oracle SQL?

Ответы [ 2 ]

2 голосов
/ 10 апреля 2019

Рассмотрим следующее:

WITH SS AS (SELECT SUM(SALES) AS TOTAL_SALES FROM SALES),
     SPS AS (SELECT SUM(POST_SALES) AS TOTAL_POST_SALES FROM POST_SALES)
SELECT TOTAL_SALES, TOTAL_POST_SALES, TOTAL_SALES - TOTAL_POST_SALES AS SALES_DIFF
  FROM SS
  CROSS JOIN SPS

Здесь мы используем общие табличные выражения SS и SPS для вычисления общих продаж и общих продаж. Затем мы перекрестно соединяем эти CTE, которые гарантированно возвращают по одной строке каждая, и, таким образом, перекрестное соединение гарантированно возвращает одну строку, вычисляет разницу, и все готово.

dbfiddle здесь

Удачи.

2 голосов
/ 10 апреля 2019

Вы можете поместить их в select:

select ( (select sum(sales) from sales) -
         (select sum(post_sales) from post_sales)
       ) as diff
from dual;
...