尝试在SQL中汇总交易数据

时间:2019-05-02 22:36:23

标签: sql oracle-sqldeveloper

我试图分别查找分割交易和单个交易的数量之和,txns的计数,dollar_value_us的总和以及保证金的计算。

下面是我正在使用的事务,但是它的作用是,它检查该表中是否存在任何SKU(而903633确实存在),然后聚合整个事务,包括不在POD_SKU中的SKU。 / p>

我希望得到的是数量总和,零售价值总和(仅用于拆分交易),然后数量总和,仅零售总和。以便将其总计为总交易数据。例如A + B = C

我的输出应如下所示: enter image description here

我目前正在使用以下查询,并且我也有一个示例数据库:

  SELECT v.transaction_type
         , COUNT(DISTINCT v.transaction_number) AS transaction_count
         , COUNT(DISTINCT v.individual_id) AS customer_count
         , SUM(v.quantity) AS units
         , SUM(v.dollar_value_us) AS sales
         , SUM(v.dollar_value_us - v.cogs * v.quantity) AS profit   FROM (SELECT td.transaction_number, td.sku, td.quantity, td.dollar_value_us, td.individual_id, td.cogs,
                   CASE 
                     WHEN COUNT(ps.sku) OVER (PARTITION BY td.transaction_number) > 0
                     THEN 'Yes'
                     ELSE 'No'
                   END AS has_pod_sku,
                   CASE  
                     WHEN COUNT(ps.sku) OVER (PARTITION BY td.transaction_number) > 0
                      AND COUNT(ps.sku) OVER (PARTITION BY td.transaction_number)
                        < COUNT(*) OVER (PARTITION BY td.transaction_number)
                     THEN 'Split'
                     ELSE 'Single'
                   END AS transaction_type
              FROM transaction_detail_mv td
              LEFT OUTER
              JOIN pod_sku ps on ps.sku = td.sku
         ) v  WHERE has_pod_sku = 'Yes'   GROUP BY v.transaction_type

下面是示例数据库的链接:

https://dbfiddle.uk/?rdbms=oracle_11.2&fiddle=07e5283cb4c06e4260ff266ff5d36f1a

0 个答案:

没有答案