MySQL查询技巧3

1.查询多列数据的最大值

  • CASE WHEN 方式
select 'key' ,
   case when  
      case when X < Y then Y else X end
        < Z then Z else case when X < Y then Y else X end 
    end as greatest from greatests;
  • 转换行格式后使用MAX函数
select k, max(col) as greatest from (
   select k, x as col from greatests 
       union
   select k, y as col from greatests
       union
   select k, z as col from greatests
       ) as temp 
   group by k;
  • 使用GREATEST函数
select k, GREATEST(X, GREATEST(Y,Z)) as greatest from greatests;

2.排序

  • 跳过位次排序
select name, price,
    RANK() OVER (ORDER BY price DESC) as rank from product;
select p1.name, p1.price, (select count(p2.price) from product p2
    where p2.price > p1.price) + 1 as rank
from product p1 order by rank;
  • 连续排序
select name, price,
    DENSE_RANK() OVER (ORDER BY price DESC) as rank from product; 
select p1.name, p1.price, (select count(distinct(p2.price)) from product p2
    where p2.price > p1.price) + 1 as rank
from product p1 order by rank;
  • 分组排序
select district, name, price,
    RANK() OVER (PARTITION BY district 
    ORDER BY price DESC) as rank from product;
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • MYSQL 基础知识 1 MySQL数据库概要 2 简单MySQL环境 3 数据的存储和获取 4 MySQL基本操...
    Kingtester阅读 12,359评论 5 116
  • pyspark.sql模块 模块上下文 Spark SQL和DataFrames的重要类: pyspark.sql...
    mpro阅读 13,176评论 0 13
  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 10,877评论 0 9
  • 1.简介 数据存储有哪些方式?电子表格,纸质文件,数据库。 那么究竟什么是关系型数据库? 目前对数据库的分类主要是...
    乔震阅读 5,878评论 0 2
  • 原创: 苏沁小妹 苏沁阁 昨天 亲爱的同学: 你好! 很开心可以给你写这封信,我是苏沁姐姐。 首先姐姐必须跟你提前...
    知车坊阅读 1,675评论 0 0

友情链接更多精彩内容