如何将 SQL 结果划分为类别



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

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

所以基本上,我将数据库的内容分为"低于平均水平"、"平均"和"高于平均水平"的类别,这在纸面上听起来很简单,但显然需要更多的工作才能中继到 SQL 指令中。

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

这是否可以在 SQL Server 上完成,或者我是否必须脱机查询所有信息并在代码中生成值?

可以使用条件聚合和单个查询:

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;

最新更新