如何在sql中计算销售和退货的百分比

如何在sql中计算销售和退货的百分比,sql,sql-server,Sql,Sql Server,我在表格中有10列,如下所示: (transaction id, customer id, transaction date, product subcategory, product category, quantity, rate, tax, total amount and store type.) 如果返回值为负值(数量、费率、税金和总金额),我必须计算 按产品子类别划分的销售额和退货百分比是多少?这听起来像是,例如: SELECT productsubcategory, SUM

我在表格中有10列,如下所示:

(transaction id, customer id, transaction date, product subcategory,
 product category, quantity, rate, tax, total amount and store type.)
如果返回值为负值(数量、费率、税金和总金额),我必须计算

按产品子类别划分的销售额和退货百分比是多少?

这听起来像是,例如:

  SELECT productsubcategory, SUM(CASE WHEN quantity < 0 THEN 1 ELSE 0)/COUNT(*)
  FROM t
  GROUP BY productsubcategory
选择productsubcategory,SUM(数量小于0时为1,否则为0)/COUNT(*)
从t
按产品子类别分组
这将给出所有交易的回报率。如果您希望以每项为基础,而不是以每笔交易为基础,则更像:

  SELECT productsubcategory, SUM(CASE WHEN quantity < 0 THEN -quantity ELSE 0)/SUM(ABS(quantity))
  FROM t
  GROUP BY productsubcategory
选择productsubcategory,SUM(数量<0时的情况-其他数量为0)/SUM(ABS(数量))
从t
按产品子类别分组

但要注意如何对待数量;我猜“卖20块饼干,还15块饼干”总共是35个产品动作,其中15个是退货。我不知道您是否希望得出“15/20(75%)的饼干被退回”的结论,在这种情况下,退货占销售额的百分比,而不是销售额+退货的百分比

请提供样本数据和期望的结果。这听起来像是一个基本的
分组查询,所以你也应该显示你的尝试。“选择pro_subcat,(sum(qty)*100)/rate as salepercentage,(sum(qty)*100)/qty as returnpercentage from Tb2_trans GROUP BY pro_subcat,rate,qty”@GordonLinoffi尝试了这两个查询,但结果只是产品子类别,输出中未显示任何百分比值。是的,我想得出销售回报率的结论。计算列是百分比。这在我的查询中:
SUM(数量<0时为1,否则为0)/COUNT(*)
-如果有20行,则COUNT(*)为20。如果其中一半为负数,则求和(当