Вычислить проценты в SQLite - PullRequest
       2

Вычислить проценты в SQLite

5 голосов
/ 05 октября 2011

Вот запрос:

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. Я думаю, что я должен как-то определить, чтобы возвращать число с плавающей запятой или около того.

Спасибо!

Ответы [ 2 ]

8 голосов
/ 05 октября 2011

Попробуйте разделить на 100.0 вместо 100.Это приведет к приведению типа данных с плавающей точкой:

select
(
SELECT     COUNT(*)
FROM         Sending s
WHERE     (ConfID = 1) AND (Status = 1)
)
/
(
 (
 SELECT     COUNT(*)
 FROM         Numbers
 WHERE     (ConfID = 1)
 )
 /
 100.0
)
0 голосов
/ 05 октября 2011

Попробуйте:

SELECT SUM(CASE status WHEN 1 THEN 100 ELSE 0 END) / COUNT(*)
  FROM numbers
 WHERE confid = 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...