1、关于group by 表内容:
2005-05-09
胜
2005-05-09
胜
2005-05-09
负
2005-05-09
负
2005-05-10
胜
2005-05-10
负
2005-05-10
负
如果要生成下列结果,
该如何写sql
语句?
胜
负
2005-05-09
2
2
2005-05-10
1
2
答案:
1)
select
rq,sum
(case
when
shengfu=
'
胜
'
then
1
else
0
end
) as
胜
,sum
(case
when
shengfu=
'
负
'
then
1
else
0
end
) as
负
from
tab3 group
by
rq
2)
select
N.rq,N.
胜
,M.
负
from
(select
rq,count
(*)
胜
from
tab3 where
shengfu=
'
胜
'
group
by
rq)N inner
join
(select
rq,count
(*)
负
from
tab3 where
shengfu=
'
负
'
group
by
rq)M on
N.rq=M.rq
3)
select
a.rq,a.
胜
as
胜
,b.
负
as
负
from
(select
rq,count
(shengfu)
胜
from
tab3 where
shengfu=
'
胜
'
group
by
rq) a,
(select
rq,count
(shengfu)
负
from
tab3 where
shengfu=
'
负
'
group
by
rq) b
where
a.rq=b.rq;
1.
关于group by
表内容:
1)
select
rq,sum
(case
when
shengfu=
'
胜
'
then
1
else
0
end
) as
胜
,sum
(case
when
shengfu=
'
负
'
then
1
else
0
end
) as
负
from
tab3 group
by
rq
2.
表中有A B C
三列,
用SQL
语句实现:当A
列大于B
列时选择A
列否则选择B
列,当B
列大于C
列时选择B
列否则选择C
列。
3. 一个日期判断的sql 语句 请取出tab5
表中日期(SendTime
字段)
为当天的所有记录?(SendTime
字段为datetime
型,包含日
期与时间) 4.
有一张表,里面有3
个字段:语文,数学,英
语。其中有3
条记录分别表示语文70
分,数
学80
分,英语58
分,请用一条sql
语句查询出这三条记录并按以下条件显示出来(并写出您的思路):
------------------------------------------------------------------------------------------- ---------------------------------------------------------
6.
一个表中的Id
有多个记录,把所有这个id
的记录查出来,并显示共有多少条记录数。
select * from (select tab8,count (id) as num from tab8 group by id) t where t.num> 1 |
7. 用一条SQL 语句 查询出每门课都大于80 分的学生姓名
name kecheng fenshu
张三
语文
81
张三
数学
75
李四
语文
76
李四
数学
90
王
五
语文
81
王五
数学
100
王五
英语
90
a):
select
distinct
name
from
tab9
where
name
not
in
(select
distinct
name
from
tab9 where
fengshu<=
80
)
b):
select
* from
tab9 t7 where
t7.name
not
in
(select
t5.name
from
(select
* from
(select
t1.kecheng from
tab9 t1 group
by
t1.kecheng),(select
t2.name
from
tab9 t2 group
by
t2.name
)) t4,(select
* from
tab9) t5 where
t4.name
= t5.name
and
t4.kecheng = t5.kecheng
and
t5.fengshu <
80
)
8.
一个叫department
的表,里面只有一个字段name,
一
共有4
条纪录,分别是a,b,c,d,
对应
四个球对,现在四个球对进行比赛,用一条sql
语句显示所有可能的比赛组合.
select t.bh|| 'vs' ||t1.bh from tab10 t,tab10 t1 where t.bh<>t1.bh 这个是分主客场的
select t.bh|| 'vs' ||t1.bh from tab10 t,tab10 t1 where t.bh<>t1.bh and t.bh>t1.bh 这个是不分的
9.
怎
么把这样一个表儿
year month
amount
1991 1 1.1
1991 2 1.2
1991 3 1.3
1991
4 1.4
1992 1 2.1
1992 2 2.2
1992 3 2.3
1992
4 2.4
查成这样一个结果
year
m1 m2 m3 m4
1991 1.1 1.2 1.3 1.4
1992 2.1 2.2 2.3 2.4
a):
select
t.year
,
(select
a.amout from
tab11 a where
a.month
=
1
and
a.year
=t.year
) m1,
(select
b.amout from
tab11 b where
b.month
=
2
and
b.year
=t.year
) m2,
(select
c.amout from
tab11 c where
c.month
=
3
and
c.year
=t.year
) m3,
(select
d.amout from
tab11 d where
d.month
=
4
and
d.year
=t.year
) m4
from
tab11 t group
by
t.year
10.
拷贝表(
拷贝数据,
源表
名:a
目标表名:b)
SQL: insert into b(a, b, c) select d,e,f
from b;
create table test as select * from dept; -- 从已知表复制数据和结构
create table test as select * from dept where 1=2; -- 从已知表复制结构但不包括数据
11.
显示文章、提交人和最后回复时间
select
a.title,a.username,b.adddate from table a,(select max(adddate) adddate
from table where table.title=a.title) b
12.
日程安排提前五分钟提醒
13.
两张关联表,删除主表中已经在副表中没有的信息
delete
from
fubiao a where
a.fid not
in
(select
id
from
zhubiao)
14.
有两个表tab12
和tab13
,均有key
和value
两个字段,如果tab13
的key
在tab12
中也有,就把tab13
的value
换为tab12
中对应的value
update
tab13 set
value
=(select
value
from
tab12 where
tab12.key
=tab13.key
)
15.
原表:
courseid coursename score
-------------------------------------
1
java
70
2
oracle
90
3
xml
40
4
jsp
30
5
servlet
80
-------------------------------------
为了便于阅读,
查询此表后的结果显式如下(
及格分数为60):
courseid coursename score mark
---------------------------------------------------
1
java
70
pass
2
oracle
90
pass
3
xml
40
fail
4
jsp
30
fail
5
servlet
80
pass
---------------------------------------------------
select
t.courseid,t.coursename,t.score,(case
when
score>
60
then
'pass'
else
'fail'
end
) mark from
tab14 t
16.
表15
a1
a2
1
a
1
b
2
x
2
y
2
z
用select
能选成以
下结果吗?
1 ab
2 xyz
17.
题为
有两个表, t1, t2,
Table t1:
SELLER |
NON_SELLER
-----
-----
A
B
A
C
A
D
B
A
B
C
B
D
C
A
C
B
C
D
D
A
D
B
D
C
Table
t2:
SELLER |
BAL
------
--------
A
100
B
200
C
300
D
400
要求用SELECT
语句列出如下结果:------
如A
的SUM(BAL)
为B,C,D
的和,B
的SUM(BAL)
为A,C,D
的和.......
且用的方法不要增加数据库负担,
如
用临时表等