【巨杉数据库Sequoiadb】【咨询】【数据操作】【聚集查询】在执行聚集查询时,字符类型的字段能否按照实际内容进行分组去重

LogicCipherX
• 阅读 1347

【问题描述】
在聚集查询时,能否将字符类型字段按照实际内容进行分组去重呢?
示例:

  1. 插入数据包含字符串

db.cs.cl.insert( { a : {“20190101000000” }} )
db.cs.cl.insert( { a : {“20190101111111” }} )
db.cs.cl.insert( { a : {“20190103000000” }} )

  1. 执行 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. 如果字符串内容非时间戳格式,则无法转成日期内容进行分组去重
点赞
收藏
评论区
推荐文章
kenx kenx
4年前
MySQL查询结果集字符串操作之多行合并与单行分割
前言我们在做项目写sql语句的时候,是否会遇到这样的场景,就是需要把查询出来的多列,按照字符串分割合并成一列显示,或者把存在数据库里面用逗号分隔的一列,查询分成多列呢,常见场景有,文章标签,需要吧查询多个标签合并成一列,等,需要怎么去实现呢,这就涉及到MySQL的字符串操作groupconcat场景再现我想把查询多列数据合并成一列显示用逗号分隔
Stella981 Stella981
4年前
Elasticsearch Query DSL之Term level queries
简介term\_level查询操作的是存储在反向索引(倒排索引)中的准确词根,这些查询通常用于结构化数据,如数字、日期和枚举,而不是全文字段,无需进行分析(分词),termlevel查询类似于关系型数据库的(where条件过滤)。其查询模式如下:termquery查找包含指定字段中精确匹配查询字符串的文档。
Wesley13 Wesley13
4年前
MySQL总结
mysql数据库字段类型在mysql中包含的数据类型很多,这里主要列出来常用的几种数字:int(整数),decimal(浮点数)字符串:char(不可改变字符数),varchar(有限长度,可变字符    数),text(大文本)约束
Wesley13 Wesley13
4年前
mysql中的回表查询与索引覆盖
了解一下MySQL中的回表查询与索引覆盖。回表查询要说回表查询,先要从InnoDB的索引实现说起。InnoDB有两大类索引,一类是聚集索引(ClusteredIndex),一类是普通索引(SecondaryIndex)。InnoDB的聚集索引InnoDB聚集索引的叶子节点存储行记录,因此InnoDB必须要有且只有一个聚集索引。
Wesley13 Wesley13
4年前
Mysql索引最佳实践笔记0524
mysql5.7innodb默认存储引擎一、关于索引二、最佳实践三、避坑实践一、关于索引1.索引的作用提高查询效率数据分组、排序避免回表查询优化聚集查询用于多表join关联查询利用唯一性约束、保证数据唯一性innodb行锁实现索引的“
Wesley13 Wesley13
4年前
mysql查询下划线_需要做转义处理
问题:查询%\_1时会把包含12,\_12,6541\_的数据全查出来今天处理公司业务id时查询\_1结尾的数据like“%\_1”,把包含1的数据都查出来了。这是因为下划线也被当作特殊字符,做了任意匹配转换了,所以,要想匹配下划线,那么就需要“转义”一下。方案:使用转义字符1.使用使用Escape转义示例:SE
Wesley13 Wesley13
4年前
Mysql 5.6 “隐式转换”导致的索引失效和数据不准确
背景在一次进行SQl查询时,我试着对where条件中vachar类型的字段去掉单引号查询,这个时候发现这条本应该很快的语句竟然很慢。这个varchar字段有一个复合索引。其中的总条数有58989,甚至不加单引号查出来的数据不是我们想要的数据。使用的是mysql5.6版本,innoDB引擎实际情况如下
Wesley13 Wesley13
4年前
mysql 分组查询教程
1.分组  分组就是将一个“数据集”划分成若干个“小区域”,然后针对若干个“小区域”进行数据处理。2.分组的特点  1.)groupby的含义:将查询结果按照1个或多个字段进行分组,字段值相同的为一组  2.)groupby可用于单个字段分组,也可用于多个字段分组3分组的用法select字段名from数据表gro
Wesley13 Wesley13
4年前
MySQL查询优化
在我们使用MySQL数据库时,比较常用也是查询,包括基本查询,关联查询,条件查询等等,对于同一个操作,SQL语句的实现有很多种写法,但是不同的写法查询的性能可能会有很大的差异。这里主要介绍下select查询优化的要点。1\.使用慢查询日志去发现慢查询。2\.使用执行计划去判断查询是否正常运行。3\.总是去测试你的查询
Wesley13 Wesley13
4年前
MongoDB学习(使用分组、聚合和映射
使用分组、聚合和映射归并    MongoDB的强大功能之一,是直接在服务器对文档的值进行复杂的操作,而不用先发文档发送到客户端在进行处理。结果分组  对大型数据集进行查询操作时,通常会根据文档的字段值对其进行分组。这可以在取回文档后通过代码来完成,但在服务器端查找的同时进行分组效率跟高。  要将查询
Elasticsearch Mapping类型修改
背景通常数据库进行分库分表后,目前比较常规的作法,是通过将数据异构到Elasticsearch来提供分页列表查询服务;在创建Elasticsearch索引时,基本都是会参考目前的业务需求、关系数据库中的类型以及对数据的相关规划来定义相关字段mapping的