用sql写出喝汽水的问题

今天遇到一个有趣的sql,练习一下

  题目:一家冷饮店,一瓶汽水1元钱,喝完汽水后,用2个空瓶可以换1瓶汽水,若你有20元钱,最多可以喝到几瓶汽水?(用sql写出)

 用表格列出过程:

如果没有思路时,可以先用程序写出结果,其过程和sql差别不大

int func(int m)
{
    int n=1, s;     //n:这次新换的,s:上一次换过之后剩余的
    int sum = m;     //初始化总换取的数量为所给钱数
    while (n!=0)
    {
        n = m / 2;
        s = m % 2;
        m = n + s;
        sum = sum + n;
    }
    return sum;
}

  注:具体代码其实和sql写法大致差不多

用同样的思路,转换为sql,运行结果:

declare @n int -- 上次换掉剩余的的旧空瓶
declare @m int -- 当前一共有的空瓶数
declare @s int -- 总共喝的瓶数
declare @sum int -- 总共喝的瓶数

-- m(当前一共有的空瓶数)=n(上次新换的瓶子)+s(上次换掉剩余的的旧空瓶)

set @m = 20
set @n = 1
set @sum = @m

WHILE @n != 0
BEGIN
SET @n = @m / 2
SET @s = @m % 2
SET @m = @n + @s
SET @sum = @sum + @n
END

print @sum

  

原文地址:https://www.cnblogs.com/mmdz/p/12899850.html