【
问题
描述】
在聚集
查询时
,能否将字符
类
型字段按照
实际
内容
进
行分
组
去重呢?
示例:
1.
插入数据包含字符串
db.cs.cl.insert( { a : {“20190101000000” }} )
db.cs.cl.insert( { a : {“20190101111111” }} )
db.cs.cl.insert( { a : {“20190103000000” }} )
2.
执行
aggregate
查询,能否实现将字符串格式按照
20190301
这一段内容
进行分组去重?
【解决
办
法】
1. SequoiaDB aggregate
函数目前不支持将字符串的某段内容
进
行分
组
,只支持
对
整个字符串
进
行分
组
去重
2.
从客
户
的
问题
来看,客
户
是想将字符串格式的
时间
戳
转
成
时间
内容来
进
行分
组
,最便捷的方法是通
过
SQL
语法去实现
3.
针对客户的问题,可以利用
SequoiaSQL-MySQL/SequoiaSQL-PostgreSQL + SequoiaDB
工具,使用
标
准
SQL
语句实现将字符串格式的时间戳转成日期内容进行分组去重,示例如下:
1
)
使用
SQL
语句建表:
mysql> create table t1 ( a char(16) ) ;
2
)
插入数据
mysql> insert into t1 values ( "20190101000000" );
mysql> insert into t1 values ( "20190101111111" );
mysql> insert into t1 values ( "20190103000000" );
3)
使用
SQL
语句将字符串格式转成日期内容进行分组去重
mysql> select count( a), date_format( a. '%Y-%m-%d' ) a from t1 group by date_format( a, '%Y-%m-%d' );
4)
步
骤
3
查询结果如下:
count ( a ) a
2 2019-01-01
1 2019-01-03
4.
如果字符串内容非
时间
戳格式,
则
无法
转
成日期内容
进
行分
组
去重
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69935160/viewspace-2649018/ ,如需转载,请注明出处,否则将追究法律责任。