我已经按照特定列排序了以下数据集:
ratio
-----
1
1
1
0.8333
1
1.6667
3.3333
1
我想计算比率等于1但仅的行,直到我找到比率不 1的行。 对于上述数据集,我的预期结果将是 3 (前三行)。
当然我可以在代码中执行此操作,但我只是想知道是否有SQL解决方案。
答案 0 :(得分:2)
您说数据是由特定列"排序的。如果是这样,你可以这样做:
select count(*)
from table t
where specificcolumn < (select min(t2.specificcolumn)
from table t2
where t2.ratio <> 1)
根据订购的不同,<
可能需要>
。
注意:这假定特定列具有唯一值。如果值不是唯一的,那么您需要多个列作为唯一键。
答案 1 :(得分:1)
如果表中有另一个主键列:
private void button1_Click(object sender, EventArgs e)
{
string varsql2check = "";
do{
SqlConnection conn = new SqlConnection(@"Data Source=.\wintouch;Initial Catalog=bbl;User ID=sa;Password=Pa$$w0rd");
conn.Open();
string varsql = "DELETE FROM wgcdoccab WHERE 'tipodoc' ='FSS' and 'FP' "; //sql query
SqlCommand cmd = new SqlCommand(varsql, conn);
SqlDataReader dr = cmd.ExecuteReader();
} while(varsql2check = "SELECT * from wgcdoccab where 'tipodoc' !='FSS' and !='FP' and contribuinte !='999999990' and datadoc != CONVERT(varchar(10),(dateadd(dd, -1, getdate())),120);");
dr.Close();
conn.Close();
}
答案 2 :(得分:0)
您也可以尝试使用更新
$scope.$watch('vehicles', function() {
$scope.isend();
});
$scope.$watch('fitment', function() {
$scope.isend();
});
$scope.$watch('tags', function() {
$scope.isend();
});
$scope.isend = function(){
if($scope.vehicles !== undefined && $scope.fitment !== undefined && $scope.tags !== undefined)
alert('doSomething');
}
我使用的是t-sql语法,但你可能会在
中找到类似的东西答案 3 :(得分:0)
当表仅包含1时,戈登的解决方案不起作用。 也许此解决方案将为您服务
SELECT COUNT(*) AS CNT
FROM
(
SELECT SUM(CASE WHEN ratio = 1 THEN 1 ELSE 0 END) OVER(ORDER BY SortColumn DESC) AS NotOneCount
FROM YourTable
) t
WHERE t.NotOneCount = 0;