Подсчет различий по нескольким столбцам - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть два CTE.Ниже приведен вывод моего первого CTE.

| ORDER_NUMBER | ORDER_FLAG | EMPLOYEE | PRODUCT_CATEGORY | SALES  |
|--------------|------------|----------|------------------|--------|
| 3158132      | 1          | Don      | Newpaper Ad      | 16.00  |
| 3158132      | 1          | Don      | Magazine Ad      | 15.00  |
| 3158132      | 0          | Don      | TV Ad            | 0.00   |
| 3158132      | 1          | Don      | Billboard Ad     | 56.00  |
| 3006152      | 1          | Roger    | TV Ad            | 20.00  |
| 3006152      | 0          | Roger    | Magazine Ad      | 0.00   |
| 3006152      | 1          | Roger    | Newspaper Ad     | 214.00 |
| 3012681      | 1          | Ken      | TV Ad            | 130.00 |
| 3012681      | 0          | Ken      | Magazine Ad      | 0.00   |
| 9818123      | 1          | Pete     | Billboard Ad     | 200.00 |

Я пытаюсь подсчитать отдельные номера заказов и объем продаж по сотрудникам.Флаг заказа будет либо 1, либо 0.Если продажи превышают 0.00, флаг заказа будет установлен на 1.

Мой желаемый результат.

| Employee | Sales  | Orders |
|----------|--------|--------|
| Don      | 87.00  | 1      |
| Ken      | 130.00 | 1      |
| Pete     | 200.00 | 1      |
| Roger    | 234.00 | 1      |

Я пытался создать комбинацию из отдельного случая,и конкретные заявления без какой-либо удачи.Есть мысли?

Ответы [ 3 ]

0 голосов
/ 12 декабря 2018

Этот запрос будет работать для вас

SELECT 
  EMPLOYEE,
  SUM(SALES) SALES,
  1 AS ORDERS
FROM 
  YOUR_TABLE
GROUP BY 
  EMPLOYEE

вы можете заменить свой подзапрос на YOUR_TABLE.

SELECT 
  EMPLOYEE,
  SUM(SALES) SALES,
  1 AS ORDERS
FROM 
(
  SELECT * FROM ...
)
GROUP BY 
  EMPLOYEE
0 голосов
/ 12 декабря 2018

Вы можете использовать это:

with cteTotalSales (...) as ()
select employee, 
   case when (sum(sales)) > 0 
     then 1 else 0 as Orders, 
 sum(sales)
from cteTotalSales
group by employee
0 голосов
/ 12 декабря 2018

Это должно быть просто:

with cte as (...)
select 
    employee, 
    sum(sales),
    count(distinct order_number)
from cte 
group by employee
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...