仅当不是特定日期时,MYSQL查询才能分组

时间:2015-10-05 18:50:30

标签: php mysql

我有一个跟踪点击的功能。它按天分组,因此用户每天只能获得一次点击。

客户希望在一个特殊的日子里,用户可以获得当天所有点击的信用。

我最初的想法是拥有两个功能。第一个函数将所有不等于特殊日期的点击拉出,并按天分组。第二个函数仅从特殊日期开始点击。然后我将两者加在一起。

有没有办法编写查询,所以我不必使用两个函数?

我当前用于提取不在给定日期的所有点击的查询是:

$sql = "SELECT DATE(timeclicked) AS Date, platform, COUNT(DISTINCT email) AS click_sum 
FROM trackclicks 
WHERE email='".$email."'
AND uid='".$uid."' 
AND action LIKE '%completed%'
AND date(timeclicked) !=  CAST('".$giving_date."' AS DATE)
GROUP BY platform, DATE(timeclicked) ";

ADDITION

这是我上一个问题的补充。该查询有效,并在PHPMyAdmin

中显示
Date          platform      click_sum
2015-10-03    Facebook      13
2015-10-04    Facebook      1
2015-10-03    Twitter       14
2015-10-04    Twitter       1

我的查询以此结尾:

if ($result = $mysqli->query($sql)) {
    $response['sum'] = $result->num_rows;
}

这给了我2,我需要它给我14分为facebook和15分为twitter

1 个答案:

答案 0 :(得分:1)

这只是我在你的陈述中添加一个if。无法测试,因为我没有数据库设置。希望对你有效。 if只检查并使用不同的计数,除非在特殊日期。

$sql = "SELECT DATE(timeclicked) AS Date, platform, IF(date(timeclicked) !=  CAST('".$giving_date."' AS DATE), COUNT(DISTINCT email), COUNT(email)) AS click_sum 
FROM trackclicks 
WHERE email='".$email."'
AND uid='".$uid."' 
AND action LIKE '%completed%'";