Будьте осторожны, занимаясь делением. Когда у вас есть счет / счет, у вас есть целочисленная математика. Таким образом, что-то вроде 3/2 приведет к 1, а не 1,5. Я немного изменил ваши примеры данных, чтобы продемонстрировать, что я имею в виду. Я включил оба вывода в вывод, чтобы вы могли увидеть разницу.
declare @Something table
(
A int
, B int
, C varchar(20)
)
insert @Something values
(30, 10, 'tomatoes')
, (30, 11, 'tomatoes')
, (5 , 10, 'tomatoes')
, (20, 5 , 'Potatoes')
, (20, 5 , 'Potatoes')
, (40, 5 , 'Potatoes')
, (10, 15, 'Onions')
, (40, 15, 'Onions')
, (20, 15, 'Onions')
select count(A)
, count(distinct B)
, count(A) / (count(distinct B) * 1.0) --multiplied by 1.0 to force division to use a decimal
, count(A) / count(distinct B) --integer math
, C
from @Something s
group by C