Как вычислить процент от общего количества на основе количества 1 поля и отфильтровать по другому полю

#sql #sql-server

#sql #sql-сервер

Вопрос:

Данные и желаемый результат:

введите описание изображения здесь

У меня есть приведенные выше данные, я хотел бы вычислить процент и показать соответствующие количества записей. Ключ подсчета представляет собой объединение 3 полей, я хочу подсчитывать его только тогда, когда он уникален по фамилии, затем я хотел бы узнать процент от общего количества для каждого отдельного типа статуса по фамилии. CountKeyTotal — это общее количество уникальных ключей для Smith, CountKey — это общее количество уникальных ключей по фамилии по статусу

Я довольно новичок в SQL и смог получить только итоговые значения в целом (в качестве примера, используя предоставленные данные, Smith 40 3 12 25%

любая помощь будет оценена

Комментарии:

1. у меня есть MS SQL server mgmt studio, а также службы отчетов SQL для работы

Ответ №1:

Вы можете использовать group by и динамическую временную таблицу для total

   select 
    a.name, a.status
 ,  count(a.countKey) as CountKEy
 , c2 as CountKeyTotal
 , (a.count(*) / b.c1) *100 as percentage 
 from my_table as a 
 inner join( select name, count(*) as c1 , count(countKey)  c2 from  my_table
             group by name) b  on a.name = b.name
 group by a.name