首页 > 解决方案 > 如何按除法获取数据的累积计数

问题描述

我正在使用 SQL Server

假设我有一组数字范围的数据。我想通过从最高功率到最低点除以 12 来计算数据的出现次数。

declare @highest decimal(9,5) = 72, @lowest decimal(9,5) = 12

--假设数据最高点为72,最低点为12

declare @division decimal(9,6) = (@highest - @lowest)*12

select floor((data - @lowest) / @division)*@division+@lowest AboveLine, 
       count(data>floor((data - @lowest) / @division)*@division+@lowest) Counts
from Dataset
group by floor((data - @lowest) / @division)
order by AboveLine desc

我已经检查了很多次脚本。引擎只是不运行代码并抱怨

Incorrect syntax near ')'.

代码有什么问题?有没有更智能的方法来编写它而不使用group by?这是一种非常混乱且不灵活的查询方式。

标签: sqlsql-server

解决方案


这是什么?

count(data>floor((data - @lowest) / @division)*@division+@lowest)

我假设你打算像这样:

sum(case when data > floor((data - @lowest) / @division) * @division + @lowest
         then 1 else 0
    end) as counts

推荐阅读