Mysql Регистрация на одном столе - PullRequest
0 голосов
/ 26 апреля 2019

У меня есть одна таблица с именем seismik

╔═══════════════╦══════════╗
║      date     ║ type     ║ 
╠═══════════════╬══════════╣
║   2019-04-01  ║  rock    ║ 
║   2019-04-01  ║  water   ║
║   2019-04-01  ║  water   ║
║   2019-04-02  ║  rock    ║
║   2019-04-02  ║  rock    ║
║   2019-04-03  ║  water   ║
║   2019-04-03  ║  water   ║
║   2019-04-04  ║  rock    ║
╚═══════════════╩══════════╝

То, что я хочу сделать, это подсчитать, сколько печатных камней в каждой дате, но я хочу, чтобы дата, у которой еще нет камней, все еще существует, и значение равно нулю.

Поэтому я использую этот запрос

SELECT date,type, COUNT(`type`) AS `freq`
FROM seismik 
WHERE type = "rock"
GROUP BY date_time

И результат становится

╔═══════════════╦══════════╦═════════╗
║      date     ║ type     ║ freq    ║ 
╠═══════════════╬══════════╬═════════╣
║   2019-04-01  ║  rock    ║    1    ║
║   2019-04-02  ║  rock    ║    2    ║
║   2019-04-04  ║  rock    ║    1    ║
╚═══════════════╩══════════╩═════════╝

То, что я ожидал, это

╔═══════════════╦══════════╦═════════╗
║      date     ║ type     ║ freq    ║ 
╠═══════════════╬══════════╬═════════╣
║   2019-04-01  ║  rock    ║    1    ║
║   2019-04-02  ║  rock    ║    2    ║
║   2019-04-03  ║  null    ║   null  ║ <- This
║   2019-04-04  ║  rock    ║    1    ║
╚═══════════════╩══════════╩═════════╝

Ответы [ 3 ]

3 голосов
/ 26 апреля 2019

используйте case when и удалите условие where

ДЕМО

 SELECT dateval,max(case when types='rock' then types end) types, COUNT(case when `types`='rock' then 1 end) AS `freq`
 FROM t1 
 GROUP BY dateval

ВЫХОД:

dateval     types   freq
2019-04-01  rock    1
2019-04-02  rock    2
2019-04-03          0
2019-04-04  rock    1
0 голосов
/ 26 апреля 2019
select s.Date,e.type,count(e.type)/4 
FROM seismik as s left join seismik as e
on e.type = s.type and e.type='rock'
GROUP BY date;

Результат: -

2019-04-01 рок 1.0000

2019-04-02 рок 2.0000

2019-04-04 рок1,0000

2019-04-03 0,0000

0 голосов
/ 26 апреля 2019

В своем запросе вы выбираете все записи, которые имеют тип "рок".Если вы также хотите получить те, которые имеют тип null, вам придется удалить предложение where.

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