首页 > 解决方案 > 无法获得份额百分比的输出

问题描述

我需要查询帮助,以了解来自商店交易的忠诚度交易的总份额

忠诚度交易是客户使用忠诚度卡进行的交易,发生这种情况时,此交易被标记为忠诚度交易。

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

该公式适用于过滤日期。所有忠诚度交易的总数/所有交易的总数(包括忠诚度交易)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 %

感谢所有帮助

谢谢

标签: sqlformula

解决方案


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

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'


推荐阅读