gpt4 book ai didi

sql - 如何计算group by语句中总数的百分比?

转载 作者:行者123 更新时间:2023-12-02 21:43:27 27 4
gpt4 key购买 nike

我有一个表,每个销售人员每天每笔销售有 1 条记录

NAME  DATE
joe 1-1-13
joe 1-1-13
joe 1-1-13
dave 1-1-13
joe 1-2-13

我用它来创建和填充表格

create table #sales (name varchar(10), salesdate date )
insert into #sales (name, salesdate)
values ('joe', '01-01-2013'), ('joe','01-01-2013'),
('joe', '01-01-2013'), ('dave','01-01-2013'),
('joe','01-02-2013')

我想要一个查询来提取每个销售人员每日销售额的百分比

(例如,2013 年 1 月 1 日,乔当天售出 4 件商品中的 3 件 (75%)但我不知道 SQL 如何能够提取当天所有销售的每日总额,而不管销售人员是谁

这是我所能得到的最接近的结果。

select name, salesdate, count(*) as "dailyTotal"
from #sales
group by name, salesdate

如何包含每日总计,以便将其用于计算当天的总计百分比?

最佳答案

这不是最优雅的方法,但你可以尝试一下 -

select [name],[salesdate], COUNT(*) as dayTotal, 
SUM(COUNT(*)) over() as AllSales,
(COUNT(*) * 1.0) / SUM(COUNT(*)) over() as dayPercent
FROM [dbo].[sales]
group by [name], [salesdate]

我删除了你的表名中的#。顺便说一句,此代码取决于 OVER() 子句。您可以自行了解如何截断多余的零。

name    salesdate   dayTotal    AllSales    dayPercent
dave 2013-01-01 1 5 0.200000000000
joe 2013-01-01 3 5 0.600000000000
joe 2013-01-02 1 5 0.200000000000

HTH。

如果该查询对您来说太复杂,那么首先看看这个。它会让你了解我正在尝试做什么。

select [name],[salesdate], COUNT(*) as dayTotal, 
SUM(COUNT(*)) over() as AllSales
FROM [dbo].[sales]
group by [name], [salesdate]

关于sql - 如何计算group by语句中总数的百分比?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20532187/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com