无法获得份额百分比的输出

时间:2018-07-31 10:38:03

标签: sql formula

我需要一个查询帮助才能从商店交易中找出忠诚度交易的总份额

会员交易是客户使用会员卡的交易,发生这种情况时,该交易将被标记为会员交易。

所有交易明细,无论是正常交易(非忠诚交易)还是忠诚交易都记录在交易表中

该公式用于过滤日期。 所有会员交易的总次数/所有交易的总次数(包括会员交易)x 100%

这是我的查询

select 
    [Loyalty_Share] = ((select count([Transaction No_]) 
                        from [ABC Store$Transaction Header] 
                        where [Customer Disc_ Group] = 'LOYALTY' 
                          and Date = '01-Jun-2018') /
                       (select count([Transaction No_]) 
                        from [ABC Store$Transaction Header] 
                        where Date = '01-Jun-2018')) * 100
from 
    [ABC Store$Transaction Header]
where 
    Date = '01-Jun-2018'

我正在寻找一行以%表示结果的行 例如34.04%

我的查询为我提供了多个全为0的行,类似于此

忠诚度分享

0 
0
0
0
0
0
0

如何更正查询,使我得到一行,一个结果,格式为XX.XX%

感谢所有帮助

谢谢

1 个答案:

答案 0 :(得分:1)

您的问题是整数的除法。但是您可以使用条件聚合从根本上简化查询:

select avg(case when Customer Disc_ Group = 'LOYALTY' then 100.0 else 0 end) as Loyalty_Share
from [ABC Store$Transaction Header]
where Date = '01-Jun-2018';

如果Date是使用日期/时间数据类型存储的,则应使用标准格式的常量– '2018-06-01'