【发布时间】:2019-02-07 23:27:46
【问题描述】:
我有两张表,如下所示:
WORKDAYS
DATE | WORKDAY_LENGHT |
-----------+----------------+
12-05-2018 | 8 |
13-05-2018 | 6.5 |
14-05-2018 | 7.5 |
15-05-2018 | 8 |
ACCIDENTS
TOD | SEVERITY |
-----------------+-----------+
12-05-2018 12:00 | minor |
12-05-2018 15:00 | minor |
13-05-2018 08:00 | severe |
13-05-2018 12:00 | severe |
14-05-2018 10:30 | severe |
我需要如下结果:
WORKDAYS
DATE | WORKDAY_LENGHT | ACCIDENTS_COUNT|
-----------+----------------+----------------+
12-05-2018 | 8 | 2 |
13-05-2018 | 6.5 | 2 |
14-05-2018 | 7.5 | 1 |
15-05-2018 | 8 | 0 |
到目前为止我尝试过的是:
SELECT DISTINCT
w.date,
(
SELECT
COUNT(*)
FROM
accidents a
WHERE
date(w.date) = date(a.tod)
)
AS accidents_count
FROM
workdays w
这给了我一个有点朝着正确方向的答案。像这样的:
WORKDAYS
DATE | WORKDAY_LENGHT | ACCIDENTS_COUNT|
-----------+----------------+----------------+
12-05-2018 | 8 | 1 |
12-05-2018 | 8 | 1 |
13-05-2018 | 6.5 | 1 |
13-05-2018 | 6.5 | 1 |
14-05-2018 | 7.5 | 1 |
15-05-2018 | 8 | 0 |
这是 sqlite,因此日期值存储为字符串。因此,日期函数应该使它们只是日期,对吧?或者是那个导致问题的原因?
【问题讨论】:
-
date()要求其第一个参数是时间和日期函数支持的格式,否则返回 null。您的日期列中的值不是这些格式之一。列表见sqlite.org/lang_datefunc.html。 -
@Shawn 我的错,我可能在这里发布了无效数据。日期实际上是这种格式:事故表中的日期分别为 2019-02-05 和 2019-02-07T19:23:43.278Z。