计算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