Деление скважины является вычитанием, так что да. Сдвиг вправо на 1 (разделите на 2). Теперь вычитаем 5 из результата, подсчитывая количество вычетов, пока значение будет меньше 5. Результатом будет количество вычитаемых вычетов. О, и деление, вероятно, будет быстрее.
Гибридная стратегия сдвига вправо, а затем деление на 5 с использованием нормального деления может привести к повышению производительности, если логика в делителе еще не делает этого для вас.
использовать левое соединение
WITH MemberNums AS
(
SELECT School_No, Category, COUNT(Member_No) AS NumberOfMembs
FROM Member_School
WHERE Finish_Date > GETDATE()
AND Category IS NOT NULL
GROUP BY School_No, Category
)
SELECT School.School_No, Category.Category, MemberNums.NumberOfMembs AS NumberOfMembs, School.School_Name, School.ATH_No, School.AWA_No, School.CLE_No, School.CYC_No, School.CYF_No, School.OBS_No, School.PEN_No, School.RHI_No,
School.STA_No, School.SYL_No
FROM School
left JOIN MemberNums
ON School.School_No = MemberNums.School_No
LEFT JOIN Category
ON Category.Category_No = MemberNums.Category
ORDER BY School_No
Вы пытались использовать правильное внешнее соединение? Используйте правую внешнюю функцию соединения и объединения, чтобы 0 отображалось вместо нуля. Я разместил пример запроса ниже
WITH MemberNums AS
(
SELECT School_No, Category, COUNT(Member_No) AS NumberOfMembs
FROM Member_School
WHERE Finish_Date > GETDATE()
AND Category IS NOT NULL
GROUP BY School_No, Category
)
SELECT School.School_No, Category.Category, COALESCE(MemberNums.NumberOfMembs, 0) AS NumberOfMembs, School.School_Name, School.ATH_No, School.AWA_No, School.CLE_No, School.CYC_No, School.CYF_No, School.OBS_No, School.PEN_No, School.RHI_No,
School.STA_No, School.SYL_No
FROM School
INNER JOIN MemberNums
ON School.School_No = MemberNums.School_No
RIGHT OUTER JOIN Category
ON Category.Category_No = MemberNums.Category
ORDER BY School_No
Если вы хотите, чтобы все результаты из школы и member_school, которые могут не иметь категории, то вы могли бы вместо этого рассмотреть FULL OUTER JOIN [ 114]