【发布时间】:2018-02-16 13:21:20
【问题描述】:
我正在尝试构建一个 SQLite 查询,该查询将从单个表中收集统计信息。
该表包含一个日志,每天有几个条目。我需要在搜索参数中为每一天获取一个单独的行,然后使用某些布尔值编译这些日期内的行总数。
这是我目前的查询:
SELECT DATE(DateTime) AS SearchDate,
(SELECT COUNT() AS Total
FROM CallRecords
WHERE DATE(DateTime)
BETWEEN '2017-08-27' AND '2017-09-02'
GROUP BY DATE(DateTime)
ORDER BY Total DESC) AS Total,
(SELECT COUNT() AS Total
FROM CallRecords
WHERE NoMarket = 1
AND DATE(DateTime)
BETWEEN '2017-08-27' AND '2017-09-02'
GROUP BY DATE(DateTime)
ORDER BY Total DESC) AS NoMarkets,
(SELECT COUNT() AS Total
FROM CallRecords
WHERE Complaint = 1
AND DATE(DateTime)
BETWEEN '2017-08-27' AND '2017-09-02'
GROUP BY DATE(DateTime)
ORDER BY Total DESC) AS Complaints,
(SELECT COUNT() AS Total
FROM CallRecords
WHERE Voicemail = 1
AND DATE(DateTime)
BETWEEN '2017-08-27' AND '2017-09-02'
GROUP BY DATE(DateTime)
ORDER BY Total DESC) AS Voicemails
FROM CallRecords
WHERE DATE(DateTime) BETWEEN '2017-08-27' AND '2017-09-02'
GROUP BY SearchDate
还有输出:
8/28/2017 175 27 11
8/29/2017 175 27 11
8/30/2017 175 27 11
8/31/2017 175 27 11
9/1/2017 175 27 11
如您所见,它正确获取了每个单独的日期,但列的总数不正确。
显然,我在查询中遗漏了一些内容,但我不确定在哪里。有没有更好的方法来执行这个查询?
编辑:我在这里查看了其他几个标题几乎相同的问题,但我没有找到与我正在寻找的类似的东西。大多数似乎比我想要完成的要复杂得多。
【问题讨论】:
-
@Yunnosch 在不提供实际数据库的情况下如何做到这一点?
-
通过提供来自 SQLite 命令行工具的
.dump用于适当定制的玩具数据库。
标签: mysql sql sqlite datetime aggregate-functions