【问题标题】:Mysql query output blank for one date and works for another date一个日期的Mysql查询输出空白并且适用于另一个日期
【发布时间】:2020-10-09 09:04:46
【问题描述】:

您好,以下是详细信息。

Mysql 表表结构

名称类型归类属性 Null 默认

1 interval_start 主要日期时间 否 无
2 ad_id Primary mediumint(9) 无 无
3 zone_id Primary mediumint(9) 否 无
4 c_count int(11) 否 0
5 i_count int(11) 否 0
6 conversion_count int(11) 无 无

表格内的数据

2020-10-08 09:30:00     216     10008   1   1   0
2020-10-08 10:30:00     216     10008   0   12  0
2020-10-08 10:32:17     216     10008   0   0   1
2020-10-08 10:40:39     216     10008   0   0   2
2020-10-08 13:30:00     216     10008   0   1   0
2020-10-09 09:30:00     216     10008   1   5   0
2020-10-09 10:10:38     216     10008   0   0   1
2020-10-09 10:30:00     216     10008   0   72  0
2020-10-09 10:56:02     216     10008   0   0   15

Mysql查询 输出正确

SELECT
    *
FROM
    (
    SELECT
        SUM(i_count),
        DATE(interval_start) as date_time
    FROM
        rv_data_reports s
) e
where date_time = '2020-10-08';

但对于以下查询,它会呈现空白输出。

SELECT
    *
FROM
    (
    SELECT
        SUM(i_count),
        DATE(interval_start) as date_time
    FROM
        rv_data_reports s
) e
where date_time = '2020-10-09';

【问题讨论】:

  • 子查询对整个数据集求和,但返回的 date_time 没有分组是不确定的。
  • 我只想总结一列,如前所述并运行良好。查询不适用于 2020-10-09 日期记录,但适用于 2020-10-08 日期记录

标签: mysql


【解决方案1】:

子查询对整个数据集求和,但没有按返回的 date_time 分组是不确定的,实际上您的第一个查询返回的日期总和不正确。

你没有说你想让子查询做什么,但如果你想按日期求和,你应该包括一个分组,例如

SELECT
    *
FROM
    (
    SELECT
        SUM(i_count),
        DATE(interval_start) as date_time
    FROM
        T s
        GROUP BY DATE(interval_start)
) e
where date_time = '2020-10-08';

子查询现在返回两个日期的总和。 查询很笨拙,例如,您可以使用 having 子句而不是主查询

   SELECT
        SUM(i_count),
        DATE(interval_start) as date_time
    FROM
        T s
        GROUP BY DATE(interval_start) having date_time = '2020-10-08'

如果要对指定数据求和,请使用 where 子句

SELECT
        SUM(i_count),
        DATE(interval_start) as date_time
    FROM
        T s
        where DATE(interval_start) = '2020-10-08'

【讨论】:

  • 亲爱的鲑鱼,我提到的查询不适用于 2020-10-09 日期记录。并且适用于 08 日期记录。有问题提到了我需要的记录,我不想将查询中提到的其他列相加
  • 亲爱的鲑鱼,我正在使用 mysql 5.7 并且在其中运行良好。
  • 为 '2020-10-08' 返回 91 的总和显然是错误的..
  • 好的,你能帮我解决查询,它适用于所有日期记录,如 08 和 09 日期。
  • 全部在提供的答案中。
猜你喜欢
  • 2021-09-18
  • 1970-01-01
  • 1970-01-01
  • 2013-06-24
  • 1970-01-01
  • 2015-12-06
  • 1970-01-01
  • 2021-02-24
  • 1970-01-01
相关资源
最近更新 更多