Расчет процента количества групп (*) - PullRequest
5 голосов
/ 07 января 2012
Select * from Namelist;
Name      Age
Sathish   25
Sathish   65
Sathish   55
Sathish   45
Sathish   35
Jana      55
Jana      25
Jana      10
Bala      55
Bala      26

Как получить процентное значение для данного формата;

Name   Count   Percentege
Sathish  5     50%
Jana     3     30%
Bala     2     20%

Пожалуйста, поделитесь sql запросом?

Ответы [ 4 ]

10 голосов
/ 07 января 2012

Это немного более сексуальная версия некоторых других ответов - обратите внимание на использование sum(100), чтобы избежать более длинного (и более обыденного) count(*) * 100:)

select name, count(*) as count, sum(100) / total as percentage
from namelist
cross join (select count(*) as total from namelist) x
group by 1
2 голосов
/ 07 января 2012

Этот запрос (не проверенный) должен работать:

SELECT Name,
COUNT(*) AS Count,
(COUNT(*) / _total ) * 100 AS Percentege
FROM Namelist,
(SELECT COUNT(*) AS _total
  FROM Namelist) AS myTotal
GROUP BY Name;
1 голос
/ 07 января 2012
select
name,
count(name) as `count`,
count(name)/(select count(*) from namelist)*100 as pct
from namelist
group by name
1 голос
/ 07 января 2012

замените имя столбца и попробуйте это:

SELECT  iName, 
    COUNT(iName) AS `Count`, 
    concat(FORMAT(((COUNT(iName) * 100) / NewPeople.iCount),2),'%') AS `Percentage`
FROM   people, (SELECT COUNT(iName) AS iCount FROM people) NewPeople 
GROUP BY iName;

Вывод:

Name   Count   Percentage
Sathish  5     50.00%
Jana     3     30.00%
Bala     2     20.00%
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...