首页
学习
活动
专区
圈层
工具
发布

问与答127:如何列出并统计列表中的唯一值?

Q:在一列中包含有很多数据,我想使用公式来列出并统计其唯一值,我不想使用数据透视表,下图1所示为示例数据。 ? 图1 使用公式,在列C中列出其唯一值,列D中列出这些值相应出现的数量。...),0) 其中,使用: COUNTIF(C1:C1,A2:A25) 计算第二个区域A2:A25中,每个单元格中的值在第一个区域中出现的次数,要么是1(表明出现了),要么是0(表明没有出现,即没有这个值)...,而这正是我们查找的唯一值。...在单元格D2中输入公式: =COUNTIF(A2:A25,C2) 统计获取的唯一值在原列表中出现的次数,如下图3所示。 ? 图3 最后,向下复制公式得到最终结果,如下图4所示。 ?...图4 对于上图2中的数组公式,当向下复制时,如果唯一值获取完了,会出现#N/A错误,对于Excel 2007及以上版本,可以使用下面的数组公式: =IFERROR(INDEX(A2:A25,MATCH(

10.2K30

数据表多字段存储值与单字段存储json值的区别

2、数据一致性:数据库可以确保字段类型正确,并应用约束,从而维护数据的一致性。 3、可读性:数据库表结构清晰,易于理解和维护。 4、标准化:符合数据库设计的规范化原则,减少数据冗余和更新异常。...多字段存储数据的缺点 1、灵活性:如果数据结构经常变化,可能需要频繁地修改数据库表结构,可能会涉及复杂的迁移过程。 2、空间效率:对于包含大量空值或重复值的字段,可能不如JSON存储方式节省空间。...单字段存储JSON值的优点 1、灵活性:可以轻松地存储和查询非结构化或半结构化数据,无需事先定义所有可能的字段。当数据结构发生变化时,不需要修改数据库表结构。...单字段存储JSON值的缺点 1、查询性能:对JSON字段进行复杂查询时,性能通常不如对多个字段进行查询。特别是当需要跨多个JSON字段进行联合查询或排序时,以及数据条数过多时,性能问题可能更加突出。...如果应用需要频繁地对特定字段进行查询、排序或过滤,并且数据结构相对稳定,那么可以选择多字段存储。 如果应用需要处理非结构化或半结构化数据,并且数据结构经常变化,那么可以选择单字段存储json值的方式。

2.5K31
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Mysql8之获取JSON字段的值

    问题是这样的,接到一个需求:         要从其它系统数据库中导出一些数据,发现其中有个字段的值是json字符串,而需求要的是该JSON字符串中某个key对应的value值。    ...需求有了,这个如果只用SQL来处理,能否实现呢,SQL能否处理JSON数据呢,这个数据库是Mysql,看了下版本,发现是8.x,Mysql8中有json函数支持json的处理,so开工探索。..."key": { "innerKey": "This is test" ... }, ... } ]     字段的json如List-1所示,对应的用json_extract...函数,json_extract(列名称,'$[0].key.innerKey')这样就取出innerKey的值了。...要注意的是该字段中不能含有非json字符串的值,不然json_extract会报错。如下List-2是SQL例子。

    9.3K10

    达梦 Json函数SQL 直接更换字段存储的Json值

    以下是一个达梦数据库(DM V8)中关于 JSON 字段的 SQL 示例,包括数据脱敏、更新 JSON 字段、删除 JSON 键与值、查询 JSON 中的一个键,以及一些日常使用的示例。...更新 JSON 字段示例 假设你想在 JSON 字段 USER_INFO 中添加一个新的键 lastLogin,并设置其值为当前时间。...JSON_REMOVE 删除 JSON 键与值示例 狗日的达梦,竟然在文档里面,没这个函数!...查询 JSON 中的一个键示例 如果你想查询 JSON 字段 USER_INFO 中的 name 值,可以使用以下 SQL: SELECT JSON_VALUE(USER_INFO, '$.name')...更新 JSON 字段:可以添加新键或更新现有键。 删除 JSON 键:可以使用 JSON_REMOVE 删除不需要的键。 查询 JSON 键:使用 JSON_VALUE 提取特定的值。

    3K00

    oracle 11g 处理json格式的字段 获取 keyvalue值

    ; BEGIN --获取json key位置 select instr(TO_CHAR("目标字段"),JSON) INTO JSON_INS from "目标表" T WHERE "表唯一主键"=KREC_ID...; --获取json后第一个冒号 select instr(TO_CHAR("目标字段"),':',JSON_INS) INTO M_INS from "目标表" T WHERE "表唯一主键"=KREC_ID...; --获取json后第一个逗号 select instr(TO_CHAR("目标字段"),',',JSON_INS) INTO D_INS from "目标表" T WHERE "表唯一主键"=KREC_ID..."目标表" T WHERE "表唯一主键"=KREC_ID; end if; --截取,字符串类型去除引号 select replace(SUBSTR(TO_CHAR("目标字段"),M_INS+1...select json_value(目标字段,'$.key值') from ‘EMP’ 本站文章除注明转载/出处外,均为本站原创,转载前请务必署名,转载请标明出处 最后编辑时间为

    10.7K21

    java反射之Field用法(获取对象的字段名和属性值)

    在Java反射中Field类描述的是类的属性信息,功能包括: 获取当前对象的成员变量的类型 对成员变量重新设值 二、如何获取Field类对象 getField(String name): 获取类特定的方法...,name参数指定了属性的名称 Class.getFields(): 获取类中public类型的属性,返回一个包含某些 Field 对象的数组,该数组包含此 Class 对象所表示的类或接口的所有可访问公共字段...()  以整数形式返回由此 Field 对象表示的字段的 Java 语言修饰符 3.获取和修改成员变量的值: getName() : 获取属性的名字 get(Object obj) 返回指定对象obj...上此 Field 表示的字段的值 set(Object obj, Object value) 将指定对象变量上此 Field 对象表示的字段设置为指定的新值 四、实践代码 1.获取对象中的所有字段名...) { //设置允许通过反射访问私有变量 field.setAccessible(true); //获取字段的值

    19.1K30

    JSON的基本操作,重点访问对象值点号(.)来访问对象的值和中括号()的区别

    ,使用中括号([])来访问属性的值:value在使用for遍历时,只能通过 myObj[x] 来获取相应属性的值,而不能使用 myObj.x** 实例 var myObj = { "name":"runoob...对象 value 可以是合法的 JSON 数据类型 1、JSON 对象中可以包含另外一个 JSON 对象: 实例 myObj = { "name":"runoob", "alexa":10000,...实例 x = myObj.sites.site1; // 或者 x = myObj.sites["site1"]; 修改值 1、你可以使用点号(.)来修改 JSON 对象的值: 实例 myObj.sites.site1...= "www.google.com"; 2、你可以使用中括号([])来修改 JSON 对象的值: 实例 myObj.sites["site1"] = "www.google.com"; 删除对象属性...1、我们可以使用 delete 关键字来删除 JSON 对象的属性: 实例 delete myObj.sites.site1; 2、你可以使用中括号([])来删除 JSON 对象的属性: 实例 delete

    3.2K10

    小白学习MySQL - TIMESTAMP类型字段非空和默认值属性的影响

    的库时,如果表中含有TIMESTAMP数据类型、缺省值为current_timestamp的字段,这些表的同步任务就都失败了,而另外的一些包含了DATETIME数据类型的表就同步成功了,不知道这是不是MySQL...不通过软件,直接手工创建,不会报错,模拟的SQL,如下所示,一个主键id,外加两个timestamp类型的字段,都设置了默认值, create table test(   id int not null...,提示为字段updatetime设置了无效的默认值, ERROR_GENERAL "Handling new table 'test'.'...虽然原始的建表语句中TIMESTAMP类型字段包含了NULL和DEFAULT属性,但是根据同步软件的错误提示,很明显,不知道什么原因,他在执行的时候忽略了这两个属性,导致真实的执行语句是, create...和ON UPDATE CURRENT_TIMESTAMP属性声明,假设这个建表语句中只有一个TIMESTAMP类型字段createtime,他的结构会改成, 按照上述规则(3),在第一个列之后的TIMESTAMP

    6.6K40

    技术分享 | MySQL 的 TIMESTAMP 类型字段非空和默认值属性的影响

    不通过软件,直接手工创建,不会报错,模拟的 SQL ,如下所示,一个主键 id ,外加两个 timestamp 类型的字段,都设置了默认值: create table test( id int not...,提示为字段 updatetime 设置了无效的默认值, ERROR_GENERAL "Handling new table 'test'.'...timestamp 列 cannot be null》这篇文章其实介绍过,MySQL 中有个 explicit_defaults_for_timestamp 变量,他决定了 MySQL 是否为 TIMESTAMP 列的默认值和...虽然原始的建表语句中 TIMESTAMP 类型字段包含了 NULL 和 DEFAULT 属性,但是根据同步软件的错误提示,很明显,不知道什么原因,他在执行的时候忽略了这两个属性,导致真实的执行语句是:...另外,多说一点,原始语句中 createtime 和 updatetime 列都指定了默认值,但还是设置 NULL 属性,这其实就有些矛盾了,或者说是设计上的不严谨,从规范设计开发的角度,还是应该避免的

    6.8K20

    springjackson:实现对保存JSON字符串的字段自动序列化和反序列化

    对于spring-web项目,在数据库设计时,当我们想增加一个字段时,并不希望修改表结构,希望设计一个专用的扩展字段,将增加的扩展字段以一个JSON字符串形式保存在这个专用字段中。...spring对JSON的序列化和反序列化是依赖jackson来完成的。...数据发送给前端的时候,我们希望jackson在序列化一个数据库记录对象时以JSON的形式返回这个JSON扩展字段的内容,而不是一个String, 同时前端也能以一个JSON的形式定义这个JSON扩展字段...,服务端在收到请求jackson在反序列化时能自动将这个JSON字段反序列化为String.这样省去了手工写代码转换的过程才是最方便的。...(int) end); } } 然后再使用@JsonDeserialize注解指定props字段使用我们定义的反序列化器 如下,就可以完美实现JSON字段的自动序列化和反序列化 @JsonRawValue

    2.7K20

    MySQL中Explain的Extra字段值Using index和Using where;Using index和Using where以及Using index condition的区别

    哪个检索的性能更好呢?         其实顾名思义,Extra是补充说明的意思,也就是说,Extra中的值补充说明了MySQL的搜索引擎(默认为InnoDB)对当前的select语句的执行计划。...在分别介绍以上四个值之前,我们需要知道,MySQL的架构分成了server层和存储引擎层(storage engine),server层通过调用存储引擎层来返回数据。               ...Extra为null表示查询的列未被索引覆盖,且where筛选条件是索引的前导列,这意味着用到了索引,但是部分字段未被索引覆盖,必须通过“回表”来实现,因而性能也比前两者差。        ...而对于innodb聚集索引,完整的记录已被读入到innodb缓冲区,在这种情况下,ICP不会减少io,所以ICP只适用于二级索引,一般发生在查询字段无法被二级索引覆盖的场景,该场景下往往需要回表。...index 和 using where using index 的区别 7. https://www.cnblogs.com/fswhq/p/icp.html Index Filter及ICP特性

    8.4K40

    Excel公式练习47: 根据单元格区域中出现的频率和大小返回唯一值列表

    本次的练习是:有一个包含数字和空的单元格区域,如下图1所示示例的单元格区域A1:F6,要求生成这些数字的唯一值,并按数字出现的频率顺序排列,出现频率高的排在前面,如果几个数字出现的频率相同,则数字小的排在前面...、3.00000016666667和3.00000025分别表示在Range1内出现的1、6和4这三个值,其小数部分可进行区分。...现在,我们需要一种方法,该方法可用于从该数组中标识唯一值并将它们按降序排列,即: 6.0000002 5.0000005 3.000001 3.00000025 3.00000016666667 1.00000033333333...为了将我们的数组限制为仅考虑唯一值的数组,公式中使用以下部分: FREQUENCY(0+(Range1&0),0+(Range1&0)) 将转换为: {3;15;0;0;3;0;0;6;0;0;0;0;...简单地使用INDEX函数处理由FREQUENCY函数生成的数组,使用合适大小和值的数组传递给其row_num参数,结果数组将是一个由6行6列组成的数组。

    3K20
    领券