需求是這樣的:
有個學生表
create table student
(id int primary key,
name varchar2(200)
);有個成績表
create table score
( id int , --對應與student 的 id(僅為測試,表結構也沒好好設計)
math int,
eng int,
time varchar(200)
);insert into student values(1,'lipf');
insert into student values(2,'lixw');
insert into student values(3,'liyf');
insert into score values(1,47,534,'2000');
insert into score values(1,35,43,'2001');
insert into score values(1,56,5,'2002');
insert into score values(1,47,674,'2004');
insert into score values(2,47,43,'2000');
insert into score values(2,35,21,'2001');
insert into score values(2,56,5,'2002');
insert into score values(2,47,32,'2004');
如果某個學生的數學成績大於英語成績(不管在那一年),則學生的記錄在頁面上要變紅。
select distinct id, name,min(flag)over(partition by name) xx from
(select a.id,a.name, b.flag from student a
inner join (select distinct id, sign(math-eng) flag from score ) b
on a.id=b.id
)
這樣子就會在記錄後邊加上一列,表示是否變紅。
乙個SQL的幾種寫法
某天在某技術群看見有人發了這樣乙個圖求助,一看就覺得這題考查的是利用sql行轉列 我腦海第一時間就想到用oracle的decode函式來寫,但又想到題目沒有具體說是哪一種資料庫 如果用decode的話,在mysql下是完全不一樣的用法 也是因為這次我才知道mysql也有decode方法,但跟orac...
乙個關於模糊查詢的寫法
今天在論壇上看到這樣一帖 share欄位是varchar型別的,裡面存放的資料是 1,2,24 格式的 現在我要找出該字段中所有包含1,2,3,4四個數字中任一數值的記錄。我最初的寫法 db.dbcmd.commandtext select from userinfo where share lik...
乙個 關於 case when的SQL
例 從stud grade表中查詢所有同學考試成績情況,凡成績為空者輸出 未考 小於60分輸出 不及格 60分至70分輸出 及格 70分至90分輸出 良好 大於或等於90分時輸出 優秀 select stud id,name,score case when grade is null then 未考...