想根据停车时长统计下不同时长下的收入情况,以下查询有啥问题,为啥结果出行多列重复呢?
select date_format(ENTER_TIME,'%%Y-%%m') AS ENTER_MON,
sum(case when stopping_time <= 30 then actual_receivable else 0 end) as 30mins,
sum(case when 30 <stopping_time <= 1440 then actual_receivable else 0 end) as 1days,
sum(case when 1440< stopping_time <= 4320 then actual_receivable else 0 end) as 3days,
sum(case when stopping_time>4320 then actual_receivable else 0 end) as others,
sum(actual_receivable) as total_fee
FROM
TB_PARK_RECORD_CAR
确认一下表里是不是存在重复的停车记录,用distinct或者是group by看一下计算的时候有没有重复的
没毛病呀,你这sql就是会出现这种结果呀,这种不叫重复好吧
mysql分为三层架构
select * from table where name=?and age=?
在没有索引下推之前:先根据name从存储引擎中获取符合规则的数据,然后再server层对age进行过滤
有索引下推之后:根据name,age两个的条件来从存储引擎中获取对应的数据
索引下推:原来在server层做的计算,放到存储引擎中计算了,减少了server层和存储引擎层的数据交互
停车时长统计收入重复的原因可能有以下几种可能性:
查询语句错误:查询语句可能存在错误,导致结果中出现重复的列。请检查查询语句是否正确,并确保使用正确的关键字和语法。
数据库中存在重复的记录:停车时长统计的收入情况可能是根据某个字段进行聚合统计的,如果数据库中存在重复的记录,那么在统计时就会出现重复的结果。请检查数据库中是否存在重复的记录,并根据需要进行去重操作。
视图或表定义错误:如果使用了视图来进行停车时长统计,并且视图的定义或者相关表的定义存在错误,那么在查询时就会出现重复的结果。请检查视图或表的定义是否正确,并根据需要进行修正。
解决这个问题的具体步骤如下:
检查查询语句:首先检查查询语句,确保语法正确,并使用正确的关键字和操作符。可以使用数据库管理工具或命令行工具执行查询语句,观察结果是否正确。
检查数据记录:查询数据库中的记录,查看是否存在重复的记录。可以使用SELECT语句查询相关表或视图的记录,并观察是否存在重复的值。如果存在重复的记录,可以考虑使用DISTINCT关键字进行去重操作。
检查视图或表定义:如果使用了视图来进行停车时长统计,检查视图的定义是否正确,并确保它能够正确地进行统计。可以查看视图的定义语句,确认是否符合预期。如果使用了表进行统计,检查表的定义是否正确,并确保数据能够正确地插入和更新。
如果以上步骤都没有解决问题,可能需要进一步检查数据库的配置和索引等因素,或者请提供更多关于问题的详细信息,以便进一步分析和解决。