我想从SQL Server数据库中生成如下所示的报告:
所以基本上,我将数据库的内容分成"低于平均水平","平均而言#34;和"高于平均水平"类别,在纸面上听起来很简单,但显然需要更多的工作来转发到SQL指令。
经过一些搜索后,似乎唯一的办法就是用不同的请求查询数据库5次。使用SQL计算每个类别中的条目百分比似乎是不可能的(例如count(条件)/ count(*),但这个不起作用)。
这可以在SQL Server上完成,还是我必须查询所有信息并在代码中构建值,离线?
答案 0 :(得分:2)
您可以使用条件聚合和单个查询:
select avg(case when val < @x then 1.0 else 0 end) as ratio_lt_x,
avg(case when val > @x and val < @y then 1.0 else 0 end) as ratio_bt_x_y,
avg(case when val >= @y then 1.0 else 0 end) as ratio_gt_y,
avg(val), stdev(val)
from t;