这个查询的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语句如何写啊?

28 条回复
  • しろ
    #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

  • rexwolf
    #6

    stackoverflow啊不过这个这么简单 你确定你不要重新学一下sql?

  • japgolly
    #7

    。。。还用这么麻烦。

    直接select name, category, salary order by category, salary desc不就完了。。category里的“Permanent”的首字母本来就在“Contract”之前,按倒叙的话本身Perm就在前面。

    另外LZ用的是Oracle还是SQL server??如果Oracle的话Order by里面没有那个逗号。稍有区别

  • icky
    #8

    我在想如果category有20个value怎么办可以 order by category = ('permanent', 'contract') 吗?

    不然就是用case,还是有点麻烦的

  • japgolly
    #9

    应该是打算转行的吧对新人要有耐心嘛

  • icky
    #10

    那自定义的顺序就没这么容易了比如,你要按 p, t, s, m 排列

  • japgolly
    #11

    LZ的问题是把正式工排在合同工前面,说明这个category只有两个decodes。你确定你看清楚问题了?

  • beerguy
    #12

    这个完全不合理, performance太差

  • icky
    #13

    看清楚了啊反正能做,以后有其他value再说。。。

    是吧

  • sonatam
    #14

    delete from tablecommit

  • japgolly
    #15

    问题是其他的value根本不存在啊你想太多了。。想确保date integrity的话我会直接在这个table上加constraints,不允许插入除perm和contract以外其他的value。

  • JavaProg 楼主
    #16

    试了,这个可以的。多谢

  • JavaProg 楼主
    #17

    多谢多谢,都很好

  • rexwolf
    #18

    耐心要看问题这种问题如果自己都解决不出来 不建议转行

  • 云邪者
    #19

    如果你想很多, partition好了简单解决问题就好了, 不用搞那么复杂

  • 云邪者
    #20

    你来一条性能高的查询看看期待

  • #21

    @しろ是时候请白老师出场了

  • しろ
    #22

    白老师已经出过了啊作者:しろ (等级:,发帖:1227) 发表:2018-01-17 10:38:13  2楼


    又来了
    lz你上次都没有谢谢人家
    [本文发送自狮城帮iOS App]

    太上立德,其次立功,其次立言--------------BE4做学问,先学会做人
    下课~

  • #23

    鼓掌讲得真好!

  • #24

    +1我都半路出家自学的sql 居然都会

  • 嘉兽
    #25

    这种初哥的问题也能上十大
    水果姐不在看来对狮城帮也有负面影响

  • nie
    #26

    这应该是非IT专业的回复吧。。。

  • 云邪者
    #27

    期待专业的答案同上

  • JavaProg 楼主
    #28

    反复试了,order by desc 不起作用试验了,order by desc 不起作用,始终是从低到高排列

    搜索了一下,发现union all 和order by不能一起用。还不确定。

狮城帮

狮城帮是关于分享和探索新加坡的地方

马上注册

已注册用户请 登录