一.查询各个部门的最高工资及姓名,其中薪资字段是字符串类型:

优化前:

SELECT
*
FROM
(SELECT
a.`deptno`, a.`sal`, a.`ename`
FROM
emp a
ORDER BY CONVERT(a.`sal`, SIGNED) DESC) aa
GROUP BY aa.deptno;

优化后:

SELECT
aa.`ename`, aa.`sal`, aa.`deptno`
FROM
emp aa,
(SELECT
a.`deptno`, MAX(CONVERT(a.`sal`, SIGNED)) max_sal
FROM
emp a
GROUP BY a.`deptno`) bb
WHERE aa.`deptno` = bb.deptno
AND aa.`sal` = bb.max_sal;

二.case when使用总结

case when两种语法及与聚合函数使用:
1.
SELECT
CASE
WHEN a.`accountChannel` = 'BSR' THEN '上饶银行'
WHEN a.`accountChannel` = 'BGZ' THEN '贵州银行'
WHEN a.`accountChannel` = 'JZ' THEN '丰付'
ELSE '其它'
END 类型
FROM
`jz_local_account` a
GROUP BY a.`accountChannel`;

2.
SELECT
CASE accountChannel
WHEN 'BSR' THEN '上饶银行'
WHEN 'BGZ' THEN '贵州银行'
WHEN 'JZ' THEN '丰付'
ELSE '其它'
END 类型
FROM `jz_local_account` a
GROUP BY a.`accountChannel`;

3.比如说一个学生表,有学生id,名字,老师id,来源(app或者pc) 我们有这样的一个需求 我们想知道每个老师有几个学生,并且这些学生里面 来自app的有几个 来自pc的有几个。
这个就有点麻烦了,要看每个老师下面有几个学生 肯定是将老师id分组 然后count(1) , 这个简单 但是 我们还要知道每个老师下面学生分别来自app几个 pc端几个 无疑还是要用到count 然后再搭配case when 的用法来判断

SELECT count(1) '数量',stu.tid,
COUNT(CASE WHEN ly = 'pc' then 1 END) pc,
COUNT(CASE WHEN ly = 'app' then 1 END) app
FROM stu GROUP BY tid

#意思就是说 只要ly=pc 就算符合一条 然后用count累加 后面的那个1 无关紧要,你写任意数字都可以 但是我们习惯上都写1 比如我们习惯上统计总数喜欢count(1)

Mysql--查询相关语句总结的更多相关文章

  1. mysql查询相关的命令解析

    特:不重启mysql 更新配置文件方法(不允许重启mysql实例或连接不上msyql服务器): gdb -p $(pidof mysqld) -ex "set max_connections ...

  2. mysql 查询select语句汇总

    数据准备: 创建表: create table students( id int unsigned primary key auto_increment not null, name varchar( ...

  3. mysql查询相关

    查询事务 SELECT * FROM information_schema.INNODB_TRX\G; 查询正在锁的事务 SELECT * FROM INFORMATION_SCHEMA.INNODB ...

  4. mysql查询相关问题

    前言 本文实现的这个需求其实十分普遍,举例来说,我们存在一个用户来源表,用来标记用户从哪个渠道注册进来.表结构如下所示… 其中 origin 是用户来源,其中的值有 iPhone .Android . ...

  5. mysql 查询相关命令

    1. 结果集按列展示 mysql  -u用户名  -p密码  -D 数据库名 -e  sql语句 示例:mysql   -uroot  -p123456  -D mysql -e select * f ...

  6. MySQL 的相关语句(增删改查)(SQLyog软件实现)

    -- 创建雇员表:emp CREATE TABLE emp( empno INT, -- 员工编号 ename ), -- 员工姓名 job ), -- 员工工作 mgr INT, -- 领导编号 h ...

  7. 【转载】MySQL查询阻塞语句

    select r.trx_id waiting_trx_id, r.trx_mysql_thread_Id waiting_thread,        r.trx_query waiting_que ...

  8. MySQL查询相关(初级)(全文重点)

    where 是约束条件 先找到表 from t1 where 条件 : 指的是把表里的数据,一条一条的记录取出来 然后 group by 分组, having 是过滤条件 指记录已经出来 聚合 cou ...

  9. oracle查询相关语句

    1,查询表空间使用情况select a.a1 表空间名称,c.c2 类型,c.c3 区管理,b.b2/1024/1024 表空间大小M,(b.b2-a.a2)/1024/1024 已使用M,subst ...

  10. mysql 查询死锁语句

    我们可以用下面三张表来查原因:        innodb_trx ## 当前运行的所有事务        innodb_locks ## 当前出现的锁        innodb_lock_wait ...

随机推荐

  1. Splay基本操作

    我们以一道题来引入吧! 传送门 题目说的很清楚,我们的数据结构要支持:插入x数,删除x数,查询数的排名和排名为x的数,求一个数前驱后继. 似乎用啥现有的数据结构都很难做到在O(nlogn)的复杂度中把 ...

  2. Cortex-M3 / M4 Hard Fault Handler (转载)

    转自大伟的,感谢大伟的帮助调试:http://www.cnblogs.com/shangdawei/archive/2013/04/30/3052491.html http://blog.frankv ...

  3. 8 个很有用的 jQuery 技巧(转)

    http://www.oschina.net/question/12_145472 一个基于web的标签设计,打印工具,超diao http://www.oschina.net/question/17 ...

  4. jetbrains软件使用

    1.注册(有条件的话建议使用官方渠道注册https://www.jetbrains.com/store) 2018 license server http://idea.congm.in 2.禁用双击 ...

  5. 使用 MongoDB 存储商品分类信息

    此文已由作者温正湖授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 这是一篇MongoDB官网上的一篇文章,分析了使用MongoDB存储商品分类信息相比其他数据库的优势,并讲述 ...

  6. 在Visual studio 中解除 TFS 的账号绑定

    在Visual Studio中, 只要使用了TFS, 就会要求输入用户名密码验证 . 但是一旦点击验证对话框下部的:记住用户名密码 以后都不能再修改用户名了. 而且重装Visual Studio 听说 ...

  7. sigaction函数的功能

    sigaction函数的功能是检查或修改与指定信号相关联的处理动作(可同时两种操作). 他是POSIX的信号接口,而signal()是标准C的信号接口(如果程序必须在非POSIX系统上运行,那么就应该 ...

  8. Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Logger

    myeclipse 新建web项目,报错Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Logger,查看项目中已经有引入了 ...

  9. hdu 1044 Collect More Jewels

    题意: 一个n*m的迷宫,在t时刻后就会坍塌,问:在逃出来的前提下,能带出来多少价值的宝藏. 其中: ’*‘:代表墙壁: '.':代表道路: '@':代表起始位置: '<':代表出口: 'A'~ ...

  10. 题解报告:hdu 1220 Cube

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1220 问题描述 Cowl擅长解决数学问题. 有一天,一位朋友问他这样一个问题:给你一个边长为N的立方体 ...