SQL例题

作者: 洪乙己 | 来源:发表于2019-10-09 13:30 被阅读0次

例题1:表格格式转换

create table mst_class(class_id varchar(10) primary key,grade varchar(10),rate varchar(10));

insert into mst_class values('abc123','primary','70%'),('abc123','middle','65%'),('abc123','high','72%'),

('hjkk86','primary','69%'),('hjkk86','middle','63%'),('hjkk86','high','74%');

mysql> select * from mst_class;

+----------+---------+------+

| class_id | grade  | rate |

+----------+---------+------+

| abc123  | primary | 70%  |

| abc123  | middle  | 65%  |

| abc123  | high    | 72%  |

| hjkk86  | primary | 69%  |

| hjkk86  | middle  | 63%  |

| hjkk86  | high    | 74%  |

+----------+---------+------+

6 rows in set (0.00 sec)

select class_id,

max(case when grade='primary' then rate else null end) as 'primary',

max(case when grade='middle' then rate else null end) as 'middle',

max(case when grade='high' then rate else null end) as 'high'

from mst_class

group by class_id;

+----------+---------+--------+------+

| class_id | primary | middle | high |

+----------+---------+--------+------+

| abc123  | 70%    | 65%    | 72%  |

| hjkk86  | 69%    | 63%    | 74%  |

+----------+---------+--------+------+

2 rows in set (0.00 sec)

------------------------------------------------------------------------------------------------

例题2:后一天温度比前一天温度高的情况

create table temp(id int primary key,`date` date,temperature int);(1,'2013-04-01',20),

insert into temp values(2,'2013-04-02',25),(3,'2013-04-03',21),(4,'2013-04-04',24);

mysql> select * from temp;

+----+------------+-------------+

| id | date      | temperature |

+----+------------+-------------+

|  1 | 2013-04-01 |          20 |

|  2 | 2013-04-02 |          25 |

|  3 | 2013-04-03 |          21 |

|  4 | 2013-04-04 |          24 |

+----+------------+-------------+

4 rows in set (0.00 sec)

select day2.*

from temp as day1 join temp as day2 on day2.id=day1.id+1 and day2.temperature>day1.temperature;

+----+------------+-------------+

| id | date      | temperature |

+----+------------+-------------+

|  2 | 2013-04-02 |          25 |

|  4 | 2013-04-04 |          24 |

+----+------------+-------------+

2 rows in set (0.00 sec)

------------------------------------------------------------------------------------------------

例题3:排名,按照从大到小的顺序排名

方法:

1.需要列与列之间对比,自己join自己

2,需知道多少人比我大 count去找多少人比我大

3.需要去重 dictinct

4.使用大于等于会更好 过滤时用>=

mysql> create table ranktest(id int primary key,grade int);

Query OK, 0 rows affected (0.02 sec)

mysql> insert into ranktest values(1,100),(2,99),(3,100),(4,80),(5,90),(6,90),(7,70),(8,80);

Query OK, 8 rows affected (0.02 sec)

Records: 8  Duplicates: 0  Warnings: 0

mysql> select * from ranktest;

+----+-------+

| id | grade |

+----+-------+

|  1 |  100 |

|  2 |    99 |

|  3 |  100 |

|  4 |    80 |

|  5 |    90 |

|  6 |    90 |

|  7 |    70 |

|  8 |    80 |

+----+-------+

8 rows in set (0.00 sec)

select a.id,a.grade,count(distinct b.grade)as '排名'

from ranktest a join ranktest b

where b.grade>=a.grade

group by a.id

order by 排名;

| id | grade | 排名  |

+----+-------+--------+

|  1 |  100 |      1 |

|  3 |  100 |      1 |

|  2 |    99 |      2 |

|  5 |    90 |      3 |

|  6 |    90 |      3 |

|  8 |    80 |      4 |

|  4 |    80 |      4 |

|  7 |    70 |      5 |

+----+-------+--------+

8 rows in set (0.00 sec)

相关文章

  • SQL例题

    例题1:表格格式转换 create table mst_class(class_id varchar(10) pr...

  • 21、union用法深入讲解

    union 合并2两或多条语句的结果 语法:sql1语句 union sql2语句 一、例题 1.1、例题1 题目...

  • sql例题学习

    分享一波sql测试题及自己写的sql答案, 如果有更好的sql写法, 欢迎批评指正 部门表 dept:DEPTN...

  • MySQL数据库预处理

    预编译一次,可以多次执行。用来解决一条SQL语句频繁执行的问题。 例题一: 例题二:传递参数 脚下留心:1、?是位...

  • PL/SQL常见案例题

    SQL基础案例 --1.将2010-12-06转换成Dec-06-2010的格式. --2.PL/SQL中常用ro...

  • 简单机械杠杆作图

    例题 例题 答案 例题 答案 例题 答案 例题 答案 例题 例题 答案 例题 答案 例题 答案 例题 答案 例题 ...

  • 中考物理估测题总结

    例题 答案: 例题 答案 例题 答案 例题 答案 例题 答案 例题 答案 例题 答案 例题 答案 例题 答案 例题...

  • 三年中考作图光学作图汇总

    例题: 答案: 例题: 答案: 例题: 答案: 例题: 答案: 例题: 答案: 例题: 答案: 例题: 答案: 例...

  • 三年中考作图光学作图汇总

    例题: 答案: 例题: 答案: 例题: 答案: 例题: 答案: 例题: 答案: 例题: 答案: 例题: 答案: 例...

  • 5-17分数的简单分拆

    裂差公式 例题一 ☆☆: 例题二 ☆☆☆: 例题三☆☆☆: 例题四☆☆☆: 例题五 ☆☆☆: 例题六 ☆☆☆: 例...

网友评论

      本文标题:SQL例题

      本文链接:https://www.haomeiwen.com/subject/jxxgpctx.html