【问题标题】:Select values from one table, count common values from other table, show 0 if no common values从一个表中选择值,从另一个表中计算公共值,如果没有公共值则显示 0
【发布时间】: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。

标签: sqlite join count


【解决方案1】:

我错过了group by,并为在弄清楚这一点之前提出问题而感到羞耻。

添加GROUP BY date(w.date) 是这里的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-09
    • 1970-01-01
    • 2019-03-05
    • 2012-03-04
    • 2022-12-08
    • 1970-01-01
    • 2021-08-17
    • 1970-01-01
    相关资源
    最近更新 更多