【问题标题】:SQL Query Count on Column Information列信息的 SQL 查询计数
【发布时间】:2010-04-22 13:56:31
【问题描述】:

将 MySQL 5 与表“abrechnung”一起使用

id   datum     title   betrag  wal jon  al  ben
7   2010-02-08  Essen   1362     0   0   1   0
8   2010-02-15  Essen   324      0   0   1   2
9   2010-02-15  Essen   5732     0   0   1   2
10  2010-02-15  Essen   3245     0   2   1   2 

我最终想要的是:每一行“betrag”都被一个数字除,然后添加到最终结果中。除以的数字是 4 - 当前行中 2 的数量

我目前的做法如下:

SELECT SUM(betrag) AS "W->A" FROM abrechnung WHERE (wal = "0" and al = "1");

这基本上选择了我想要添加到最终结果中的条目。本例结果:10663。

其实最终的结果应该是:

  1362 / 4 (no number 2 in that row for wal, jon, al or ben)
+  324 / 3 (there is one 2 in that row for ben)
+ 5732 / 3 (same)
+ 3245 / 2 (there are 2 2's in that row)
-----------
  3 981.66

我希望这很清楚。

谢谢。

【问题讨论】:

    标签: sql count


    【解决方案1】:
    SELECT SUM(betrag / (
     4-CASE WHEN wal = 2 THEN 1 ELSE 0 END
      -CASE WHEN jon = 2 THEN 1 ELSE 0 END
      -CASE WHEN al  = 2 THEN 1 ELSE 0 END
      -CASE WHEN ben = 2 THEN 1 ELSE 0 END
    ))
    AS "W->A" FROM abrechnung 
    

    【讨论】:

    • 这是 Sybase 语法,我现在没有 MySQL 访问权限来测试它是否也可以在那里工作,但应该可以
    • 谢谢,但这不包括连续有 2 个 2 的情况
    • 我认为确实如此,因为它每 2 进行一次减法 .. 它的 4-(如果 wal=2 则 1 否则 0)-(如果 jon=2 则 1 否则 0)-usw ...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-09
    • 1970-01-01
    • 1970-01-01
    • 2015-02-22
    • 2013-09-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多