<>
- стандартный SQL-92; !=
является его эквивалентом. Оба оценивают значения, которые NULL
не являются - NULL
являются заполнитель, чтобы сказать, что существует отсутствие значения.
Именно поэтому вы можете использовать IS NULL
/ IS NOT NULL
как предикаты для таких ситуаций.
Это поведение не относится к SQL Server. Все диалоги SQL, соответствующие стандарту, работают одинаково.
Примечание. Для сравнения, если ваше значение не является нулевым, вы используете IS NOT NULL
, а для сравнения с ненулевым значением вы используете <> 'YOUR_VALUE'
. Я не могу сказать, равна ли моя ценность равным NULL, но я могу сказать, имеет ли значение NULL или NOT NULL. Я могу сравнить, если моя ценность - это нечто иное, чем NULL.
Давайте создадим некоторые игрушечные данные. Четыре лечения с разными вероятностями. 100 пациентов посещают 1000 раз.
set.seed(123)
df<-data.frame(A = sample(c("MRI", "ECG", "Echo", "PET"), 1000,
prob=c(0.05, 0.8, 0.13, 0.02), replace=TRUE),
p = sample(1:100, 1000, replace=TRUE))
Теперь мы агрегируем данные
df %>%
# group by Treatment and patients
group_by(A, p) %>%
# first summary is the number of a specific treatments for each patient
summarise(n = n()) %>%
# next summary we sum the number distinct patients in the group
# and divide by sum the number of distinct patients to get the rel.freq of the treatment.
# Then we take the mean value of the number of treatment pr. patient
summarise(rel.freq = n_distinct(p)/n_distinct(df$p),
avg.hcu.pt = mean(n))
Результат
# A tibble: 4 x 3
A rel.freq avg.hcu.pt
<fct> <dbl> <dbl>
1 ECG 1 8.02
2 Echo 0.76 1.72
3 MRI 0.37 1.30
4 PET 0.17 1.12