Выберите значения из одной таблицы, посчитайте общие значения из другой таблицы, покажите 0, если нет общих значений - PullRequest
0 голосов
/ 08 февраля 2019

У меня есть две таблицы, которые выглядят следующим образом:

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, поэтому значения даты хранятся в виде строк.Поэтому функция даты должна делать их просто датами, верно?Или это вызывает проблемы?

1 Ответ

0 голосов
/ 08 февраля 2019

Мне не хватало group by, и мне стыдно за то, что я открыл вопрос, прежде чем выяснить это.

добавление GROUP BY date(w.date) является решением здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...