получить перцепцию в одном запросе - PullRequest
0 голосов
/ 22 февраля 2012

Мне нужно что-то вроде

$query = SELECT COUNT(id) as user_in FROM <table_user> WHERE user= 11;
$query = SELECT COUNT(id) as total FROM <table_user> WHERE 1 ;
$percetage = $user_in / $total * 100;`

в одном запросе.

Пожалуйста, помогите

Ответы [ 4 ]

2 голосов
/ 22 февраля 2012
SELECT
  SUM(IF user=11,1,0)*100/COUNT(*) AS percentage
FROM table_user;
0 голосов
/ 22 февраля 2012

Чтобы придерживаться вашего подхода с двумя начальными утверждениями, вы можете просто объединить свои утверждения (декартово произведение) и выполнить свои вычисления.

SELECT your_calculation FROM select_statement1, select_statement2;

В вашем примере это переводится как

SELECT 100.0*user_in/total FROM
(SELECT COUNT(id) as user_in FROM <table_user> WHERE user= 11),
(SELECT COUNT(id) as total FROM <table_user> WHERE 1);

Я только что проверил это с SQLite, по MySQL должно быть почти то же самое. В SQLite 100.0 важно, чтобы избежать целочисленного деления!

0 голосов
/ 22 февраля 2012

1001 * попробовать *

SELECT COUNT(id) / (SELECT COUNT(*) FROM table_user) * 100 AS PERCENTAGE
FROM table_user;
WHERE user= 11;
0 голосов
/ 22 февраля 2012

Вот хороший простой

SELECT SUM(IF(user=11,1,0))/COUNT(id) AS percentageAsDecimal FROM <table_user>

Просто предупреждение, однако, это приведет к ошибке, если в нем нет строк, так как это будет деление на 0

...