MySQL按日期分组小于多个日期

MySQL按日期分组小于多个日期,mysql,Mysql,我认为这是一个困难的问题。 我需要按多个日期对表进行分组。棘手的部分是,我不需要将组作为具体日期,我需要它是比日期小的所有值。因此,如果只是一个日期,我的查询将如下所示 从创建位置的用户中选择count(*)请检查: SELECT created_at , count(*) FROM users WHERE created_at < '2016-01-01' GROUP BY created_at; 选择创建时间,计数(*) 来自用户 创建地点为

我认为这是一个困难的问题。 我需要按多个日期对表进行分组。棘手的部分是,我不需要将组作为具体日期,我需要它是比日期小的所有值。因此,如果只是一个日期,我的查询将如下所示

从创建位置的用户中选择count(*)请检查:

SELECT created_at , count(*) 
FROM users 
WHERE created_at < '2016-01-01' 
GROUP BY created_at;
选择创建时间,计数(*)
来自用户
创建地点为<'2016-01-01'
分组方式:创建于;
查询将返回分组日期和每个日期的行数。

请检查此项:

SELECT created_at , count(*) 
FROM users 
WHERE created_at < '2016-01-01' 
GROUP BY created_at;
选择创建时间,计数(*)
来自用户
创建地点为<'2016-01-01'
分组方式:创建于;

查询将返回分组的日期以及每个日期的行数。

//使用java解释了逻辑,但希望这能有所帮助:)

您可以使用union来实现这一点, 首先搜索所有日期并使用union进行查询

String sqlPart="";
String union="";

for(int i = 0; i< dates.length;i++){
  sqlPart=sqlPart+union;
  sqlPart=sqlPart + "SELECT created_at , count(*) FROM users WHERE created_at <= "+ dates[i];
  union="union";
}
字符串sqlPart=”“;
字符串联合=”;
for(int i=0;isqlPart=sqlPart+“从用户那里选择created_at,count(*),created_at//使用java解释了逻辑,但希望这能有所帮助:)

您可以使用union来实现这一点, 首先搜索所有日期并使用union进行查询

String sqlPart="";
String union="";

for(int i = 0; i< dates.length;i++){
  sqlPart=sqlPart+union;
  sqlPart=sqlPart + "SELECT created_at , count(*) FROM users WHERE created_at <= "+ dates[i];
  union="union";
}
字符串sqlPart=”“;
字符串联合=”;
for(int i=0;isqlPart=sqlPart+“从用户中选择created_at,count(*),其中created_at有一种方法可以在一次数据库点击中获得它,是的,需要执行一些逻辑操作:

动态生成查询,如下所示:

query = "SELECT " 
for(let i = 0; i< dates.length;i++){
  if(i>0) query +=",";
  query += "SUM(if(created_at <='${dates[i]}',1,0))"; 
}
query += " from users ";
在这里,您将得到如下结果: 6,4,2

现在,这里的每个列值将给出相同数组序列中的日期计数

例如: 第一个值6是第一个数组值的计数,该值为2016-06-01,依此类推,可以根据需要以任何格式格式化

不过,你可以通过应用你的逻辑知识来更好地改进这一点。
这不是精确的编译代码,请将其作为参考以实现相同的效果。

有一种方法可以在一次数据库命中中获得它,是的,需要执行一些逻辑操作:

动态生成查询,如下所示:

query = "SELECT " 
for(let i = 0; i< dates.length;i++){
  if(i>0) query +=",";
  query += "SUM(if(created_at <='${dates[i]}',1,0))"; 
}
query += " from users ";
在这里,您将得到如下结果: 6,4,2

现在,这里的每个列值将给出相同数组序列中的日期计数

例如: 第一个值6是第一个数组值的计数,该值为2016-06-01,依此类推,可以根据需要以任何格式格式化

不过,你可以通过应用你的逻辑知识来更好地改进这一点。
这不是精确的编译代码,请将其作为参考以实现相同的效果。

为什么不在db.query(query);