Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
计算SQLite中的百分比_Sql_Sqlite - Fatal编程技术网

计算SQLite中的百分比

计算SQLite中的百分比,sql,sqlite,Sql,Sqlite,问题是: select ( SELECT COUNT(*) FROM Sending s WHERE (ConfID = 1) AND (Status = 1) ) / ( ( SELECT COUNT(*) FROM Numbers WHERE (ConfID = 1) ) / 100 ) 我想计算百分比。例如,如果查询 SELECT COUNT(*) FROM Numbers

问题是:

select
(
SELECT     COUNT(*)
FROM         Sending s
WHERE     (ConfID = 1) AND (Status = 1)
)
/
(
 (
 SELECT     COUNT(*)
 FROM         Numbers
 WHERE     (ConfID = 1)
 )
 /
 100
)
我想计算百分比。例如,如果查询

SELECT     COUNT(*)
     FROM         Numbers
     WHERE     (ConfID = 1)
给100,另一个给

 SELECT     COUNT(*)
    FROM         Sending s
    WHERE     (ConfID = 1) AND (Status = 1)
结果50结果查询应返回50,即50%。但如果第一个查询结果为2,第二个返回10000,则结果查询返回0。我想我应该以某种方式定义返回浮点数等等


谢谢

尝试除以
100.0
而不是
100
。这将强制强制转换为浮点数据类型:

select
(
SELECT     COUNT(*)
FROM         Sending s
WHERE     (ConfID = 1) AND (Status = 1)
)
/
(
 (
 SELECT     COUNT(*)
 FROM         Numbers
 WHERE     (ConfID = 1)
 )
 /
 100.0
)
尝试:


你试过(100*第一次查询)/第二次查询吗?@Laurent不是
(100*第一次查询)/第二次查询
(第一次查询)/(第二次查询/100)
?@Benoit我知道,看看我的答案。劳伦特的建议也不起作用(看看EmptyStack的回答和OP的评论)。我的观点是:即使劳伦特的建议有效,也会产生误导。不要为了愚弄数据类型而重新计算。使用正确的数据类型。我只是想避免舍入错误。。。(即,如果所有类型都是整数,则2/100=0)菱形!明确地说我需要!非常感谢!这也是我最初的想法,问题是OP是从2个不同的表中选择的,您已经总结了100个表。但是,您的结果除法将是
200/10000=0.02
,在整数除法中,它将取整为
0
。你需要总结一下
100.0
@Adrian:除非我想要一个四舍五入为整数的值(通常这对用户来说已经足够了)。否则你是对的@克劳森:是的,我没有从最初的问题中看到这一点
SELECT SUM(CASE status WHEN 1 THEN 100 ELSE 0 END) / COUNT(*)
  FROM numbers
 WHERE confid = 1