Mysql加入日期在一张桌子上

时间:2019-04-26 10:18:33

标签: mysql datetime

我有一个名为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 个答案:

答案 0 :(得分:3)

使用@Override public void onResume() { super.onResume(); ((AppCompatActivity)getActivity()).getSupportActionBar().setElevation(0); } 并删除case when条件

DEMO

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

答案 1 :(得分:0)

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

答案 2 :(得分:-1)

在查询中,您将选择所有类型为“ rock”的条目。如果您还想获取类型为null的那些,则必须删除您的从句。