SQL Query返回行数,直到满足某些条件

时间:2015-07-21 10:15:34

标签: mysql sql

我已经按照特定列排序了以下数据集:

ratio
-----
1
1
1
0.8333
1
1.6667
3.3333
1

我想计算比率等于1但的行,直到我找到比率 1的行。 对于上述数据集,我的预期结果将是 3 (前三行)。

当然我可以在代码中执行此操作,但我只是想知道是否有SQL解决方案。

4 个答案:

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