Есть ли способ получить процент за поле earch - PullRequest
0 голосов
/ 23 декабря 2019

Мне нужен процент для каждого статуса

Select NAME, STATUS, Count(*) From DATA 

group by NAME, STATUS
order by NAME

Result is here

I need percentage for each of the statues

Ответы [ 3 ]

1 голос
/ 23 декабря 2019

Вам нужно создать подзапрос для подсчета без статуса, затем вам нужно получить процент в зависимости от пользователя, вы можете попробовать это ниже:

Select f1.NAME, f1.STATUS, Count(*),CONCAT((Count(*)*100)/(select Count(*) from data f2 where NAME=f1.Name group by f2.NAME),'%') From DATA f1

group by f1.NAME, f1.STATUS
order by f1.NAME

Или, если у вас есть идентификатор пользователя, тогда это лучший запрос и отличный результат

Select f1.NAME, f1.STATUS, Count(*),CONCAT((Count(*)*100)/(select Count(*) from data f2 where UserId=f1.UserId group by f2.UserId),'%') From DATA f1

group by f1.UserId,f1.NAME, f1.STATUS
order by f1.NAME
0 голосов
/ 23 декабря 2019

Проверьте это, используя SUM для вычисления суммы, а затем используйте group by для группировки имен

SELECT name, status, COUNT(status)/(
    SELECT COUNT(status) 
    FROM data
)*100
FROM percentage
GROUP BY name, status
ORDER BY name
0 голосов
/ 23 декабря 2019

Вот как получить проценты. Сначала нужно получить общее значение count(), а затем умножить его на 1.0, чтобы получить результат в формате decimal.

select name, status, count(1) 
    ,  ((count(1) * 1.0)
        /(select count(1) from data)) * 100 as percentage
from data
group by name, status
order by name
...