34,576
社区成员
发帖
与我相关
我的任务
分享
select 'mike','math',81 union all
/*如果科目是固定的话(当然,你这个看起来就只有三科,貌似小学成绩软件)
命题可以理解为计算成绩大于80分的科目数量为最大数,即3,由此可得*/
SELECT [Name] FROM [tb]
WHERE [Grade] >= 80
GROUP BY [Name] HAVING COUNT(*) = 3
ORDER BY [Name];
GO
--========+++++++++++++++++++++++++++++++++++==========
--======= 每天都在进步,却依然追不上地球的自传=========
--======= By: zc_0101 At:2009-08-17 20:34:20=========
--========++++++++++++++++++++++++++++++++++++=========
--> 测试数据: #T
if object_id('tempdb.dbo.#T') is not null drop table #T
create table #T (name varchar(4),subject varchar(7),grade int)
insert into #T
select 'mike','math',79 union all
select 'lee','chinese',81 union all
select 'lee','math',78 union all
select 'tom','chinese',85 union all
select 'tom','math',81 union all
select 'tom','english',88
----------------查询------------
select name,min(grade) 最低分 from #T group by name having min(grade)>80
----------------结果--------------
/*
name 最低分
tom 81
*/
IF OBJECT_ID('tb') IS NOT NULL
DROP TABLE tb
GO
CREATE TABLE tb( name varchar(10),subject varchar(10) ,grade int )
go
insert tb SELECT
'mike', 'math' ,79 UNION ALL SELECT
'lee' , 'chinese' ,81 UNION ALL SELECT
'lee' , 'math' ,78 UNION ALL SELECT
'tom' , 'chinese' ,85 UNION ALL SELECT
'tom' ,'math' ,81 UNION ALL SELECT
'tom' , 'english' ,88
go
SELECT DISTINCT NAME FROM TB T
WHERE NAME NOT IN(SELECT NAME FROM TB WHERE GRADE<80)
NAME
----------
tom
(1 行受影响)
IF OBJECT_ID('tb') IS NOT NULL
DROP TABLE tb
GO
CREATE TABLE tb( name varchar(10),subject varchar(10) ,grade int )
go
insert tb SELECT
'mike', 'math' ,79 UNION ALL SELECT
'lee' , 'chinese' ,81 UNION ALL SELECT
'lee' , 'math' ,78 UNION ALL SELECT
'tom' , 'chinese' ,85 UNION ALL SELECT
'tom' ,'math' ,81 UNION ALL SELECT
'tom' , 'english' ,88
go
SELECT NAME FROM TB WHERE grade >=80 GROUP BY NAME
HAVING COUNT(*) =(SELECT COUNT(DISTINCT SUBJECT) FROM TB )
(所影响的行数为 6 行)
NAME
----------
tom
(所影响的行数为 1 行)
SELECT * FROM TB WHERE grade >=80
HAVING COUNT(*) =(SELECT COUNT(DISTINCT SUBJECT) FROM TB )
-- =========================================
-- -----------t_mac 小编-------------------
--------------------希望有天成为大虾----
-- =========================================
IF OBJECT_ID('tb') IS NOT NULL
DROP TABLE tb
GO
CREATE TABLE tb( name varchar(10),subject varchar(10) ,grade int )
go
insert tb SELECT
'mike', 'math' ,79 UNION ALL SELECT
'lee' , 'chinese' ,81 UNION ALL SELECT
'lee' , 'math' ,78 UNION ALL SELECT
'tom' , 'chinese' ,85 UNION ALL SELECT
'tom' ,'math' ,81 UNION ALL SELECT
'tom' , 'english' ,88
go
select distinct name
from tb k
where not exists(select * from tb where k.name=name and grade<80)
go
name
----------
tom
select name
from tb k
where not exists(select * from tb where k.name=name and grade<80)