我需要一个查询帮助才能从商店交易中找出忠诚度交易的总份额
会员交易是客户使用会员卡的交易,发生这种情况时,该交易将被标记为会员交易。
所有交易明细,无论是正常交易(非忠诚交易)还是忠诚交易都记录在交易表中
该公式用于过滤日期。 所有会员交易的总次数/所有交易的总次数(包括会员交易)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%
感谢所有帮助
谢谢
答案 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'
。