如何将SQL结果划分为类别

时间:2018-06-05 20:14:17

标签: sql sql-server

我想从SQL Server数据库中生成如下所示的报告:

  • %的条目< X
  • X<条目的百分比< ÿ
  • 条目的百分比> = Y
  • 所有条目值的平均值
  • 所有条目的标准差

所以基本上,我将数据库的内容分成"低于平均水平","平均而言#34;和"高于平均水平"类别,在纸面上听起来很简单,但显然需要更多的工作来转发到SQL指令。

经过一些搜索后,似乎唯一的办法就是用不同的请求查询数据库5次。使用SQL计算每个类别中的条目百分比似乎是不可能的(例如count(条件)/ count(*),但这个不起作用)。

这可以在SQL Server上完成,还是我必须查询所有信息并在代码中构建值,离线?

1 个答案:

答案 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;