Sqldf Query in R Возвращает 0 строк - PullRequest
0 голосов
/ 13 февраля 2020

У меня есть внутренний набор данных о сотрудниках, и я пытаюсь запустить базовую функцию c sqldf, чтобы получить число сотрудников с типом Regular. Я использую и ввел в R Studio следующие поля: EEID (цифра c), Employee_Type (символ).

Я могу получить базовое c количество всех строк:

start_hc <- sqldf("SELECT COUNT('Employee.ID') FROM global_hc")
print(start_hc)
COUNT('Employee.ID')
> 938

Но когда я добавляю что-то в предложение WHERE, я получаю 0 результатов:

start_hc <- sqldf("SELECT COUNT('Employee.ID') FROM global_hc WHERE 'Employee.Type' IN ('Regular')")
print(start_hc)
> 0

Я попытался сослаться на столбец Employee_Type как Employee.Type и Employee Type. Я просто не могу понять, что происходит и почему запрос возвращает 0. Пожалуйста, дайте мне знать, если вам нужна дополнительная информация, и я предоставлю ее.

Ответы [ 2 ]

0 голосов
/ 13 февраля 2020

Одинарные кавычки используются для включения константных строк, а не имен столбцов. Используйте двойные кавычки или квадратные скобки, чтобы заключить имена столбцов. Если имя столбца является синтаксически допустимым именем для SQL, то вам и не нужно; однако, в этом случае вы делаете, потому что точка является оператором SQL.

Например, при использовании встроенного фрейма данных iris это дает 0, потому что строка Petal.Length не равна 1,4

library(sqldf)

sqldf("select count(*) from iris where 'Petal.Length' = 1.4")
##   count(*)
## 1        0

Правильный способ сделать это - использовать двойные кавычки или квадратные скобки:

sqldf("select count(*) from iris where [Petal.Length] = 1.4")
##   count(*)
## 1       13
0 голосов
/ 13 февраля 2020

Может быть, вам не нужно заключать переменную в кавычки.

start_hc <- sqldf("SELECT COUNT(Employee.ID) 
                  FROM global_hc 
                  WHERE Employee.Type IN ('Regular')")
...