Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在每个月内选择不同的计数条目。MYSQL_Php_Mysql - Fatal编程技术网

Php 在每个月内选择不同的计数条目。MYSQL

Php 在每个月内选择不同的计数条目。MYSQL,php,mysql,Php,Mysql,嗨,我有一个数据库,其中一列包含电子邮件地址,第二列包含类别,第三列包含日期 我想做的是计算多个日期范围内类别“A”中唯一电子邮件地址的数量。所以我有这个: SELECT COUNT(DISTINCT email) as counter FROM table WHERE category = "A" AND date < "2015-12" AND date > "2015-11"; 选择计数(不同的电子邮件)作为计数器 从桌子上 其中category=“A”和日期“2015-

嗨,我有一个数据库,其中一列包含电子邮件地址,第二列包含类别,第三列包含日期

我想做的是计算多个日期范围内类别“A”中唯一电子邮件地址的数量。所以我有这个:

SELECT COUNT(DISTINCT email) as counter 
FROM table 
WHERE category = "A" AND date < "2015-12" AND date > "2015-11";
选择计数(不同的电子邮件)作为计数器
从桌子上
其中category=“A”和日期<“2015-12”和日期>“2015-11”;
然后我将对第二个日期范围进行单独的查询

现在我的问题是:

如果一个电子邮件地址出现在第一个月,也出现在第二个月,它将在两个月内计数,因为它在我查询的范围内是唯一的

我如何创建一个查询来计算一年中唯一的电子邮件地址,然后在一个月内计算不同的条目,而不包括重复的条目


谢谢

如果需要自定义日期,可以将值设置为vars

$custom_date_begin = "2015-01-10";
$custom_date_end  = "2015-02-10";
然后,对于vars和month组,您可以使用以下内容

 "SELECT COUNT(DISTINCT email) as counter 
 FROM table 
 WHERE category = 'A' 
 AND date >= '$custom_begin_date' AND date <='$custom_end_date'
 group by MONTH (date);"
“选择计数(不同的电子邮件)作为计数器
从桌子上
其中category='A'

和日期>=“$custom\u begin\u date”和日期如果需要自定义日期,可以将值设置为vars

$custom_date_begin = "2015-01-10";
$custom_date_end  = "2015-02-10";
然后,对于vars和month组,您可以使用以下内容

 "SELECT COUNT(DISTINCT email) as counter 
 FROM table 
 WHERE category = 'A' 
 AND date >= '$custom_begin_date' AND date <='$custom_end_date'
 group by MONTH (date);"
“选择计数(不同的电子邮件)作为计数器
从桌子上
其中category='A'

日期>=“$custom\u begin\u date”和日期提供的信息不足以编写足够的查询。所以我会试着猜测细节

假设我们需要计算每个月和类别的唯一电子邮件数量

查询可能如下所示:

SELECT dt, category, COUNT(*) AS cnt 
FROM (
    SELECT LEFT(`date`,7) AS dt, category, email
    FROM table 
    GROUP BY LEFT(`date`,7), category, email
) x
GROUP BY dt, category

如果您有可变的日期范围,那么您最好每天分组,然后通过脚本对每个日期范围的电子邮件进行计数。

提供的信息不足以编写适当的查询。所以我会试着猜测细节

假设我们需要计算每个月和类别的唯一电子邮件数量

查询可能如下所示:

SELECT dt, category, COUNT(*) AS cnt 
FROM (
    SELECT LEFT(`date`,7) AS dt, category, email
    FROM table 
    GROUP BY LEFT(`date`,7), category, email
) x
GROUP BY dt, category

如果您有可变的日期范围,那么您最好每天分组,然后通过脚本对每个日期范围的电子邮件进行计数。

查询将始终返回空结果,因为没有日期可以满足此要求:
date“2015-12-31”
感谢您的支持!如果我想要自定义日期范围,我该怎么做。。。比如说2015-01-10>2015-02-10?我已经用VAR更新了答案,用于自定义日期。如果答案正确,请标记为已接受和/或rate为Useful查询将始终返回空结果,因为没有日期可以满足此要求:
date<“2015-01-01”和date>“2015-12-31”
感谢您的支持!如果我想要自定义日期范围,我该怎么做。。。比如说2015-01-10>2015-02-10?我已经用VAR更新了答案,用于自定义日期。如果答案是正确的,请标记为已接受和/或评级为有用再次混淆“一年内的唯一电子邮件地址”,比如说,一年中不同月份的同一封电子邮件算作一封,或者每个月单独算作一封?如果你想得到正确的结果,你必须非常详细和明确地解释你需要什么。这是编程的重要部分。再次混淆“一年中唯一的电子邮件地址”——一年中不同月份的同一封电子邮件算作一封,还是每个月单独算作一封?如果你想得到正确的结果,你必须非常详细和明确地解释你需要什么。这是编程的基本部分。