mysql枫叶_mysql总结
一道面試題:
有如下表和數組,把num值處于[20-29]之間改為20,num值處于[30-39]之間的改為30
num數有:3,12,15,25,23,27,37,35,32,47,58
mysql語句:
create table mian (
num int
);
insert into mian values (3),(12),(15),(25),(23),(27),(37),(35),(32),(47),(58);
updata mian set floor(num/10)*10 where num>=20 and num <=39;
練習題:
把good表中商品名‘諾基亞xxxx’的商品改為‘HTCxxxx’,
提示:大膽的把列看成變量,參與運算,甚至調用函數來處理
substring();concat;
練習題;
+--------+---------+-------+
| name?? | subject | score |
+--------+---------+-------+
| 張三?? | 數學??? |??? 90 |
| 張三?? | 語文??? |??? 50 |
| 張三?? | 地理??? |??? 40 |
| 李四?? | 語文??? |??? 55 |
| 李四?? | 政治??? |??? 45 |
| 王五?? | 政治??? |??? 30 |
+--------+---------+-------+
求掛科大于等于2以上的平均分?
create table result(
name varchar(20) not null default '',
subject varchar(20) not null default '',
score varchar(20) not null default ''
);
insert into result values('張三','數學',90),('張三','數學',90),('張三','語文',50),
('張三','地理',40),('李四','語文',55),('李四','政治',45),('王五','政治',30);
正解:第一步:查詢所有平均分
select name,avg(score) from result grounp by name;
第二步:計算出每個人掛科情況
select name,subject,score,score<60 as gks from result;
如上:掛科數目結果:
select name,subject,score,score<60 as gks from result group by name;
每個人的平均分及掛科數在曬選一下:
select name,avg(score),sum(score<60 )as gks from result group by name
having gks>=2;
第二種解法:
select name,count(1) from result where score<60;
select name,count(1) as gks from result
where score<60
group by name
having gks>=2;
把上面的結果集當成一張表
select name from(select name,count(1) as gks from result
where score<60
group by name
having gks>=2)
as tmp;
select name,avg(score) from result
where name in ('張三','李四')
group by name;
最終代碼 這個列子用到了子查詢,并且嵌套,麻煩
如果group,having用到熟悉,一條sql語句就能完成:
select name,avg(score) from result
where name in (select name from(select name,count(1) as gks from result
where score<60
group by name
having gks>=2)
as tmp)
group by name;
為什么建表時,加not null default '',default 0?
答:不想讓表中出現null值
為什么不想要null值?
答:不好比較;
總結
以上是生活随笔為你收集整理的mysql枫叶_mysql总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 同居两个月没有怀孕
- 下一篇: 美团闪购:双11手机销售额增长800%、