这个查询的SQL语句怎么写啊?
JavaProg • • 33573 次浏览一个员工表,有三列
name,category,salary
John, contract, 2000
Joe, permanent, 2300
Annie,contract, 2050
Jerry, contract, 2550
Tom, permanent, 2340
现在查询表,按照工资从高到低排列,正式工排前面,合同工排后面,如上表,应该输出这样:
Tom,permanent, 2340
Joe, permanent,2300
Jerry,contract, 2550
Annie,contract, 2050
John,contract, 2000
SQL语句如何写啊?
-
#1
又来了lz你上次都没有谢谢人家
-
JavaProg 楼主#2
赶紧去感谢了!哈哈
-
#3
LZ 为啥不去stackoverflow我看IT的人都去那里。。。。
-
#4
试试这个select name, category, salary where category = 'permanent' order by salary
union all
select name, category, salary where category = 'contract' order by salary -
#5
掉了薪水的逆排序select name, category, salary where category = 'permanent' order by salary desc
union all
select name, category, salary where category = 'contract' order by salary desc -
#6
stackoverflow啊不过这个这么简单 你确定你不要重新学一下sql?
-
#7
。。。还用这么麻烦。
直接select name, category, salary order by category, salary desc不就完了。。category里的“Permanent”的首字母本来就在“Contract”之前,按倒叙的话本身Perm就在前面。
另外LZ用的是Oracle还是SQL server??如果Oracle的话Order by里面没有那个逗号。稍有区别 -
#8
我在想如果category有20个value怎么办可以 order by category = ('permanent', 'contract') 吗?
不然就是用case,还是有点麻烦的 -
#9
应该是打算转行的吧对新人要有耐心嘛
-
#10
那自定义的顺序就没这么容易了比如,你要按 p, t, s, m 排列
-
#11
LZ的问题是把正式工排在合同工前面,说明这个category只有两个decodes。你确定你看清楚问题了?
-
#12
这个完全不合理, performance太差
-
#13
看清楚了啊反正能做,以后有其他value再说。。。
是吧 -
#14
delete from tablecommit
-
#15
问题是其他的value根本不存在啊你想太多了。。想确保date integrity的话我会直接在这个table上加constraints,不允许插入除perm和contract以外其他的value。
-
JavaProg 楼主#16
试了,这个可以的。多谢
-
JavaProg 楼主#17
多谢多谢,都很好
-
#18
耐心要看问题这种问题如果自己都解决不出来 不建议转行
-
#19
如果你想很多, partition好了简单解决问题就好了, 不用搞那么复杂
-
#20
你来一条性能高的查询看看期待
-
#21
@しろ是时候请白老师出场了
-
#22
白老师已经出过了啊作者:しろ (等级:,发帖:1227) 发表:2018-01-17 10:38:13 2楼
又来了
lz你上次都没有谢谢人家
[本文发送自狮城帮iOS App]
太上立德,其次立功,其次立言--------------BE4做学问,先学会做人
下课~ -
#23
鼓掌讲得真好!
-
#24
+1我都半路出家自学的sql 居然都会
-
#25
这种初哥的问题也能上十大
水果姐不在看来对狮城帮也有负面影响 -
#26
这应该是非IT专业的回复吧。。。
-
#27
期待专业的答案同上
-
JavaProg 楼主#28
反复试了,order by desc 不起作用试验了,order by desc 不起作用,始终是从低到高排列
搜索了一下,发现union all 和order by不能一起用。还不确定。