【问题标题】:Use select to do math(Sqlite)使用 select 做数学(Sqlite)
【发布时间】:2015-11-12 11:49:34
【问题描述】:

我正在尝试在 sqlite3 中做一个简单的数学运算。
这是我的代码:

sqlite> select (select count(noise_value) from noise where noise_value<20)/total(select count(noise_value) from noise);
Error: near "select": syntax error

我有一个错误!但下面的代码有效:

sqlite> select (select count(noise_value) from noise where noise_value<20)/total(1);
5.0

我只想计算 A/B 的结果。
如何修复第一个代码 sn-p?救命!

【问题讨论】:

  • 你能发布一些示例数据吗

标签: sql select sqlite


【解决方案1】:

如果我理解正确,您想将 noise_value &lt; 20 的数字除以所有 noise_value 数字。

您可以为此使用COUNTCASE WHEN

SELECT 1.0 * COUNT(CASE WHEN noise_value < 20 THEN 1 END) / COUNT(*) AS result
FROM noise;

SqlFiddleDemo

您可以添加条件以避免被0除:

 SELECT 1.0 * COUNT(CASE WHEN noise_value < 20 THEN 1 END) /
        (CASE WHEN COUNT(*) = 0 THEN NULL ELSE COUNT(*) END) AS result
 FROM noise;

【讨论】:

    【解决方案2】:

    在 SQL 中,子查询必须写在自己的一对括号中。 第二个子查询周围的括号实际上属于 total() 函数调用。你需要另一对:

    ... total((select ...)) ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-07
      • 2015-11-09
      • 2022-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-18
      • 2017-07-13
      相关资源
      最近更新 更多