为 SQL 选择特定行时出现语法错误(在 R 中,使用 RSQLITE)

Syntax error when selecting specific rows for SQL (in R, using RSQLITE)

我正在尝试 select 来自纽约市帮助请求的 bigquery 数据中的一些行和列。我想要 select 五列 - 创建请求的日期、提出请求的城市、收到请求的机构等。

首先,我设法 select 我想要的列:

conn <- dbConnect(SQLite(),'nyc311.db')
dbListFields(conn, "requests")

df<-dbGetQuery(conn, 'SELECT "Agency", "Created Date", "Complaint Type", "City", Descriptor FROM requests)

  Agency           Created Date           Complaint Type     City                  Descriptor
1  DOHMH 01/25/2016 02:11:12 AM       Indoor Air Quality    BRONX Chemical Vapors/Gases/Odors
2   NYPD 01/25/2016 02:08:08 AM          Noise - Vehicle NEW YORK              Car/Truck Horn
3   NYPD 01/25/2016 02:07:24 AM  Noise - Street/Sidewalk NEW YORK                Loud Talking
4  CHALL 01/25/2016 02:05:00 AM    Opinion for the Mayor                              HOUSING
5    HRA 01/25/2016 02:01:46 AM Benefit Card Replacement                             Medicaid
6   NYPD 01/25/2016 01:54:56 AM         Blocked Driveway   CORONA                   No Access

如何从 .db 文件 select 中获取 agency=NYPD、City=Bronx 和 Queens;创建日期 = 2015 年?我尝试了以下操作,但出现语法错误。

df<-dbGetQuery(conn, 'SELECT "Agency", "Created Date", "Complaint Type", "City", Descriptor 
FROM requests WHERE City IN ("BRONX", "QUEENS") AND Agency="NYPD"
                   AND YEAR(Created Date)=2015')

我是初学者,所以我不清楚如何对年份进行子集化,因为创建日期以字符格式显示日期和时间,而不是整数。我还注意到代码运行 YEAR(Created Date)=2015

部分除外

SQLite 中没有 YEAR() 函数(尽管 MySQL 有一个,因此你会感到困惑)。首先请注意,您将日期存储为文本,并且还以 mm/dd/yyyy 的非 ANSI 格式存储。为了比较每条记录的年份,您必须使用 SQLite 的字符串函数提取此信息。以下应该有效:

SUBSTR("Created Date", 7, 4)

请注意,您还需要将 Created Date 列名称放在双引号中以转义空格。

这是我要使用的实际查询:

SELECT "Agency",
       "Created Date",
       "Complaint Type",
       "City",
       "Descriptor"
FROM requests
WHERE City IN ('BRONX', 'QUEENS') AND
      Agency = 'DOHMH' AND
      SUBSTR("Created Date", 7, 4) = '2015'      -- compare against the string '2015'

一些注意事项: SQL 中的惯例是对字符串数据使用单引号。您可以将所有列名放在双引号中,但只有在您有空格、关键字等时才有必要。

我认为创建日期有语法错误 检查这个

'SELECT "Agency", "Created Date", "Complaint Type", "City", Descriptor 
FROM requests WHERE City IN ("BRONX", "QUEENS") AND Agency="DOHMH"
                   AND YEAR("Created Date")=2015'