sql - 使用 SQL 计算百分比
问题描述
我正在尝试从下表中找到如何计算百分比
从上表中,我希望得到如下百分比的数据。但是,我下面的 SQL 语句将所有百分比值返回为 0。请告知我错过了什么。谢谢
Select SupplierID
, ProductID
, Month
, Year
, Count(SupplierID) AS TotalSales
, (count(SupplierID)* 100/(Select Count (*) From ProductOrder)) AS Percentage
From ProductOrder
Order by Year DESC, Month DESC
解决方案
那是整数除法。除法的两个操作数都是整数,因此结果也以整数形式给出;3/4
是0
,不是0.75
。要解决此问题,只需将其中一个参数转换为小数即可。
我还建议使用窗口函数而不是子查询:
select supplierid, month, year,
count(*) as totalsales,
100.0 * count(*) / sum(count(*)) over(partition by month, year) as percentage
from productorder
group by supplierid, month, year
order by year desc, month desc, supplierid
笔记:
您的原始代码不是一个有效的聚合查询开始:它缺少一个
group by
子句您的样本数据表明您希望每个供应商的比率与月份和年份的总数相比,而您的查询(尝试)计算总体比率;我也修好了
推荐阅读
- javascript - 我们可以为移动视图实现带有触摸事件的 Drag n Drop 吗?
- javascript - 什么相当于打字稿中的java interface.class
- linux - 用于 linux 的“touch”更新文件时间戳的 Windows 等效命令
- python - 以管理员身份运行 python 脚本时创建的两个 tkinter 窗口实例
- c - 插座。设置 sockaddr_in 结构的 s_addr 字段
- jmeter - Jmeter-5.0:RPS(每秒请求数)和 TPS(每秒事务数)是否相同?
- laravel-5 - 如何使用包 bschmitt/laravel-amqp 在 RabbitMq Laravel 中使用消息
- terraform - GCP terraform 提供程序 - 可能的文档错误?
- c# - 文本框 textchange 事件以单击 datagridview 中的复选框
- python - 如何在 macbook 中为 C++ 库安装 Python API