Buduję zapytanie z GROUP BY
klauzulą, która wymaga możliwości liczenia rekordów tylko na podstawie określonego warunku (np. Licz tylko rekordy, w których określona wartość kolumny jest równa 1).
SELECT UID,
COUNT(UID) AS TotalRecords,
SUM(ContractDollars) AS ContractDollars,
(COUNTIF(MyColumn, 1) / COUNT(UID) * 100) -- Get the average of all records that are 1
FROM dbo.AD_CurrentView
GROUP BY UID
HAVING SUM(ContractDollars) >= 500000
COUNTIF()
Linia oczywiście nie powiedzie się, ponieważ nie ma natywna funkcja SQL nazywa COUNTIF
, ale idea jest tu określenie procentu wszystkich wierszy, które mają wartość „1” dla MyColumn.
Czy są jakieś przemyślenia, jak poprawnie zaimplementować to w środowisku MS SQL 2005?
ISNULL
, zamiast tego możesz zrobićCASE WHEN myColumn IS NULL
lub użyćifnull
( stackoverflow.com/a/799406/1861346 )