Похоже, что ответ от fa06 - правильная логика, но у вас есть проблемы с вычислением процента.
Вот кое-что, что я только что создал, чтобы научить вас вычислять проценты в sql:
declare
@m as decimal,
@f as decimal,
@t as int
set @m = 50
set @f = 40
set @t = @m+@f
select Cast(@m / @t * 100 as decimal(5, 2)) as m, Cast(@f / @t * 100 as decimal(5 ,2)) as f
В этом сценарии @m и @f - просто фиктивные числа, а @t - общее число, поэтому @m + @f ниже показывает, как вы получите число в таблице, гдепол мужской - очевидно, измените «m» на «f», чтобы получить женщин.
select count(gender) from tablename where gender = 'm' as 'm'
Чтобы выполнить расчет, вам нужно адаптировать его к чему-то вроде:
Select Cast(Count(select gender from tablename where gender = 'm') /
Count(select gender from tablename where gender in ('m', 'f')) * 100 as decimal(5,2)
as 'm' from tablename
Отказ от ответственности - этот код не был проверен.Но логика уместна, если она не работает.
Это только для мужчин и может быть значительно упрощено, если посмотреть на решение fa06, но просто для отработки%, адаптировать логику выше - так:
Число конкретных полов / общее количество записей, предназначенных для процента, рассчитанного для * 100
Надеюсь, это поможет