Мне удалось получить желаемый результат, используя derived tables
, один для количества бронирований поставщиком и клиентом и один для общего количества бронирований клиентом.
Ниже приведен код, который вы использовали, выпотребуется заменить #table вашей таблицей и игнорировать таблицу вставок / создания.
IF OBJECT_ID('tempdb..#table') IS NOT NULL
BEGIN
DROP TABLE #table
END
CREATE TABLE #table(Booking_id int, Client_id int, supplier_id int)
insert into #table values(1,8,123)
insert into #table values(2,54,354)
insert into #table values(3,54,100)
insert into #table values(4,8,123)
insert into #table values(5,79,64)
insert into #table values(6,134,354)
insert into #table values(7,8,354)
insert into #table values(8,54,100)
insert into #table values(9,123,354)
insert into #table values(10,22,123)
SELECT NoB.Client_id,NoB.supplier_id,NoB.NumOfBookings, (NoB.NumOfBookings/(NULLIF(Tot.NumOfBookings,0) *1.0)) *100 FROM
(
SELECT Client_id, COUNT(Booking_id) As NumOfBookings, Supplier_id
FROM #table
GROUP BY Client_id, Supplier_id
) NoB JOIN
(
SELECT Client_id, COUNT(Booking_id) As NumOfBookings
FROM #table
GROUP BY Client_id
) Tot on Tot.Client_id=NoB.Client_id