MySQL-函数使用记录——窗口函数&JSON字符串

本文详细介绍了MySQL中的窗口函数,如row_number()和first_value(),以及如何利用它们进行数据排序和提取。同时,也探讨了MySQL查询JSON字符串的方法,包括json_extract、json_length和json_array_length函数,帮助理解如何从JSON数据中获取特定信息和计算数组长度。
摘要由CSDN通过智能技术生成

MySQL-窗口函数

1. row_number()

  • 解释:
    row_number函数,按照指定的字段分组、排序,并对每组中的数据进行排序编号;

  • 参数:
    row_number() over(partition by 分组字段 order by 排序字段)

  • 例子:

      每个学生的各科成绩按照分数倒序排列并标记序号:
      
      select student_id ,student_name,subject_name, score , row_number() over(partition by student_id order by score desc) as rn from score  
    
  • 结果:

student_idstudent_namesubject_namescorern
110203张三数学981
110203张三语文892
110203张三英语883
110201李四语文931
110201李四英语912
110201李四数学823
110202王二英语981
110202王二语文892
110202王二数学883

2. first_value()

  • 解释
    first_value()函数,按照指定的字段分组、排序,取出每组中指定的结果字段;

  • 参数:
    first_value(结果字段) over(partition by 分组字段 order by 排序字段)

  • 例子:

      每个学生,最高分学课科目:
      	select student_id ,student_name, row_number(subject_name) over(partition by student_id order by score desc) as subject_name from score  
    
  • 结果

student_idstudent_namesubject_name
110203张三数学
110201李四语文
110202王二英语

MySQL-查询JSON字符串

1. json_extract

  • 解释:
    json_extract:

    • a. 取出JSON字符串中的某个值;
    • b. 取出JSON数组中指定位置的值
  • 参数:
    json_extract(字段名称, “$.key值”)

  • 例子:

      json字符串为:one_json = {"a":10,"b":20,"c":30}
      select json_extract(one_json ,"$.a")
    
  • 结果
    10

  • 参数:
    json_extract(字段名称, “$.[指定位置]”)

  • 例子:

      json数组为:one_jsons = [{"a":10,"b":20,"c":30}, {"a":40,"b":50,"c":60} ]
      select json_extract(one_jsons ,"$.[1]")
    
  • 结果
    {“a”:40,“b”:50,“c”:60}

2. json_length()

  • 解释:
    json_length:取出JSON字符串的长度

  • 参数:
    json_extract(字段名称)

  • 例子:

      json字符串为:one_json = {"a":10,"b":20,"c":30}
      select json_length(one_json )
    
  • 结果
    3

3. json_array_length()

  • 解释:
    json_array_length:取出JSON数组的长度

  • 参数:
    json_array_length(字段名称)

  • 例子:

      json数组为:one_jsons = [{"a":10,"b":20,"c":30}, {"a":40,"b":50,"c":60} ]
      select json_array_length(one_jsons )
    
  • 结果
    2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值