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;i sqlPart=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;i sqlPart=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);