背景:项目中需要统计相同 搜索类型和搜索条件 下昨天与前天的搜索次数差异在页面显示(表中数据保存的维度是每天,页面展示的是所有),故需要用到双分组group by两个字段。
以下是相应的mysql代码,已测试是OK的。
SELECT
search_condition,
search_condition_md5,
search_type,
MAX(visit_time) AS visit_time,
MAX(log_id) AS log_id,
SUM(visit_count) AS visit_count,
MAX(IF(visit_date=20131106,visit_count,0))-MAX(IF(visit_date=20131105,visit_count,0)) AS change_goods_count
FROM
ecm_absearch_log
WHERE
log_id > 0
GROUP BY
search_condition_md5,search_type
备注:主要是按照 搜索条件和搜索类型 两个标识进行分组,然后按组处理。其中if的应用主要是判断存储据维度的日期,是否是昨天或者前天。是昨天的将数据作为昨天访问量,不是的记为0,同理处理前天的信息。这样,就可以保证在组中取最大的昨天数据量对应的就是昨天的数据量。最后相减运算就可以获得需要的信息!