2012-02-22 4 views

ответ

2
SELECT 
    SUM(IF user=11,1,0)*100/COUNT(*) AS percentage 
FROM table_user; 
+0

Почему кто-то всегда избивал меня в этом вопросе! –

+0

Большое спасибо вам за помощь. –

0

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

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

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

0

попробуйте

SELECT COUNT(id)/(SELECT COUNT(*) FROM table_user) * 100 AS PERCENTAGE 
FROM table_user; 
WHERE user= 11; 
+0

Я очень благодарен всем, кто ответил на этот вопрос. –

0

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

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 важно, чтобы избежать целочисленного деления!

Смежные вопросы