mysql – 基于一天中的多个选择子查询计数,想要添加表/列

前端之家收集整理的这篇文章主要介绍了mysql – 基于一天中的多个选择子查询计数,想要添加表/列前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

现在,我有一个多选子查询,它根据计算的一天中的小时数来获取数据.我现在要做的是在该查询中引入另一个表,并根据id和原始表中的日期时间进行计数.

我现在拥有的是:

  1. select
  2. (
  3. select count(a_date)
  4. from t1
  5. where d_date
  6. between '2013-01-07 00:00:00' and '2013-01-07 00:59:59'
  7. ) AS '00:00 to 00:59',(
  8. select count(a_date)
  9. from t1
  10. where d_date
  11. between '2013-01-07 01:00:00' and '2013-01-07 01:59:59'
  12. ) AS '01:00 to 01:59'

等等,直到一天结束.

我有另一个查询,它根据id和datetime给我计数,但只有两列,一列显示c_name,另一列显示小时计数.

防爆.

  1. select t2.c_name,count(t1.a_date)
  2. from t2 join t1
  3. on t2.t1_key = t1.t2_key
  4. where t1.d_date
  5. between '2013-01-07 00:00:00' and '2013-01-07 00:59:59'
  6. group by t2.c_id

基本上,我想将这两个查询组合成一个可以显示c_name和一天中所有小时的查询.

有什么建议?

最佳答案
我会研究使用CASE语句.

尝试这样的事情(添加额外的23列):

  1. select c_name,SUM(case when HOUR(d_date) = 0 then 1 else 0 end) '00:00 to 00:59',SUM(case when HOUR(d_date) = 1 then 1 else 0 end) '01:00 to 01:59'
  2. from t2
  3. join t1 on t2.t1_key = t1.t2_key
  4. group by c_name

这是SQL Fiddle.

您只需要为d_date添加WHERE标准 – 例如:

  1. where d_date between '2013-01-07 00:00:00' and '2013-01-07 23:59:59'

要么

  1. where Date(d_date) = '2013-01-07'

祝好运!

猜你在找的MySQL相关文章