SQL - возвращает значение 0 для группировки

Деление скважины является вычитанием, так что да. Сдвиг вправо на 1 (разделите на 2). Теперь вычитаем 5 из результата, подсчитывая количество вычетов, пока значение будет меньше 5. Результатом будет количество вычитаемых вычетов. О, и деление, вероятно, будет быстрее.

Гибридная стратегия сдвига вправо, а затем деление на 5 с использованием нормального деления может привести к повышению производительности, если логика в делителе еще не делает этого для вас.

0
задан hjalpmig 19 March 2019 в 09:22
поделиться

2 ответа

использовать левое соединение

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
ответ дан Zaynul Abadin Tuhin 19 March 2019 в 09:22
поделиться

Вы пытались использовать правильное внешнее соединение? Используйте правую внешнюю функцию соединения и объединения, чтобы 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]

0
ответ дан DxTx 19 March 2019 в 09:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: