sql - 无法获得份额百分比的输出
问题描述
我需要查询帮助,以了解来自商店交易的忠诚度交易的总份额
忠诚度交易是客户使用忠诚度卡进行的交易,发生这种情况时,此交易被标记为忠诚度交易。
所有交易明细,无论是普通交易(非忠诚)还是忠诚交易都记录在交易表中
该公式适用于过滤日期。所有忠诚度交易的总数/所有交易的总数(包括忠诚度交易)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 %
感谢所有帮助
谢谢
解决方案
你的问题是整数的除法。但是您可以使用条件聚合从根本上简化查询:
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'
。
推荐阅读
- scala - Sqs Akka Stream 内存不足
- php - 循环中的多个mysqli准备语句不起作用
- javascript - 将 url slug 添加到 Next Js 路由获取 TypeError 路径应该是类型字符串获取类型对象
- javafx - 如何在 Scenebuilder 中添加一个网格,其中特定列的单元格比列的其余部分多?
- c# - Closedxml:无法下载文件并立即通过邮件发送
- matlab - 对非方阵使用 Surf 和 Peaks
- django - 如何测量我的 React Native 应用程序被使用的总时间
- python - 向量化矩阵和向量之间欧几里得距离的计算
- docker - 修复 docker-image-resource put 中的“无效参考格式”错误
- ruby - 红宝石命名约定