Можно сделать это с составной литерал . Согласно той странице, это работает в C99 (который также рассчитывает как ANSI C).
MY_TYPE a;
a = (MY_TYPE) { .flag = true, .value = 123, .stuff = 0.456 };
...
a = (MY_TYPE) { .value = 234, .stuff = 1.234, .flag = false };
обозначения в инициализаторах являются дополнительными; Вы могли также записать:
a = (MY_TYPE) { true, 123, 0.456 };
...
a = (MY_TYPE) { false, 234, 1.234 };
Представьте свой общий счет как число помимо целого (ДЕСЯТИЧНОЕ?) - математические вычисления округляются.
Приводится как нечто с десятичной точностью, а не как целое число. Поплавок или реальный.
select cast(distinctCount as real)/cast(totalCount as real) * 100.00
, distinctCount
, totalCount
from (
select count(distinct id) as distinctCount
, count(id) as totalCount
from Table) as aggregatedTable
Не должно быть:
;WITH totalCount AS(
SELECT
CAST(COUNT(id) as Integer)as totalCount
FROM TABLE_NAME
)
SELECT
((CAST(COUNT(DISTINCT id) as Integer)*100/(SELECT count(*) FROM totalCount))) as 'Percent'
FROM TABLE_NAME
Обратите внимание на ВЫБОР СЧЕТЧИКА (*). Кроме того, вы должны умножить, прежде чем делить, иначе вы всегда получите ноль