SQL 21日自学通(V3.0)(PDF格式)-第24部分
按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
16 Cash 25 Wild Night Out
17 Joans Gas 25。1 Gas
20 Abes Cleaners 10。5 All Dry Clean
21 Cash 34 Trip to Dayton
现在数据已经按照你的要求进行排序而不是按照它们被输入的次序进行排序了 下边
的例子则表明 BY 是 ORDER 不可缺少的组成部分
INPUT/OUTPUT
SQL》 SELECT * FROM CHECKS ORDER CHECK#
ERROR at line 1:
ORA…00924: missing BY keyword
如果你想让数据按降序排列 也就是说数值最大的排在最前边 那么非常幸运 下例
中 PAYEEs 表中的 PAYEEs 列就是按降序排列的
INPUT/OUTPUT
SQL》SELECT * FROM CHECKS ORDER BY PAYEE DESC
CHECK# PAYEE AMOUNT REMARKS
2 Reading R。R。 245。34 Train to Chicago
1 Ma Bell 150 Have sons next time
3 Ma Bell 200。32 Cellular Phone
4 Local Utilities 98 Gas
EMAIL wyhsillypig@163。 102
…………………………………………………………Page 103……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
5 Joes Stale Dent 150 Groceries
17 Joans Gas 25。1 Gas
16 Cash 25 Wild Night Out
8 Cash 60 Trip to Boston
21 Cash 34 Trip to Dayton
9 Abes Cleaners 24。35 X…Tra Starch
20 Abes Cleaners 10。5 All Dry Clean
在 ORDER BY 后边的 DESC 表示用降序排列来代替默认的升序排列 下例则出现了
很少使用的关键字 ASC 表示要按升序进行排列
INPUT
SQL》SELECT PAYEE AMOUNT FROM CHECKS ORDER BY CHECK# ASC
OUTPUT
PAYEE AMOUNT
Ma Bell 150
Reading R。R 245。34
Ma Bell 200。32
Local Utilities 98
Joes Stale Dent 150
Cash 60
Abes Cleaners 24。35
Cash 25
Joans Gas 25。1
Abes Cleaners 10。5
Cash 34
输出的结果与最初没有使用 ASC 时是一样的 这是因为 ASC 是默认的选项 本例也
表明了用于排序的字段并不一定要出现在 SELECT 子句中 尽管我们选择的是 PAYEE 和
AMOUNT 但是排序却是按 CHECKS 进行的
ORDER BY 可以使用多个字段 下例是按 PAYEE 和 REMARKS 进行排序的
INPUT
SQL》SELECT * FROM CHECKS ORDER BY PAYEE REMARKS
OUTPUT
CHECK# PAYEE AMOUN REMARKS
T
20 Abes Cleaners 10。5 All Dry Clean
EMAIL wyhsillypig@163。 103
…………………………………………………………Page 104……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
9 Abes Cleaners 24。35 X…Tra Starch
8 Cash 60 Tripto Boston
21 Cash 34 Tripto Dayton
16 Cash 25 Wild Night Out
17 Joans Gas 25。1 Gas
5 Joes Stale Dent 150 Groceries
4 Local Utilities 98 Gas
3 Ma Bell 200。32 Cellular Phone
1 Ma Bell 150 Havesonsnexttime
2 Reading R。R。 245。34 Trainto Chicago
分析
注意在排序之前 CASH 在表中的输入次序 CHECK 号依次为 16 8 21 在 ORDER BY
子句中加入了 REMARK 字段后结果是按照 REMARK 的字母顺序进行排序 在 ORDER BY
中的列的次序对排序的结果会有影响吗 试着掉换一下 PAYEE 和 REMARKS 的次序
INPUT
SQL》SELECT * FROM CHECKS ORDER BY REMARKS PAYEE
OUTPUT
CHECK# PAYEE AMOUNT REMARKS
20 Abes Cleaners 10。5 All Dry Clean
3 Ma Bell 200。32 Cellular Phone
17 Joans Gas 25。1 Gas
4 Local Utilities 98 Gas
5 Joes Stale Dent 150 Groceries
1 Ma Bell 150 Have sons next time
2 Reading R。R 。245。34 Train to Chicago
8 Cash 60 Trip to Boston
21 Cash 34 Trip to Dayton
16 Cash 25 Wild Night Out
9 Abes Cleaners 24。35 X…Tra Starch
分析
你大概已经猜出来了 结果是完全不相同的 下例显示了如何将一列按字母的正顺排
列而把第二列按字母的逆序进行排列
INPUT/OUTPUT
SQL》 SELECT * FROM CHECKS ORDER BY PAYEE ASC REMARKS DESC
EMAIL wyhsillypig@163。 104
…………………………………………………………Page 105……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
CHECK# PAYEE AMOUNT REMARKS
9 Abes Cleaners 24。35 X…Tra Starch
20 Abes Cleaners 10。5 All Dry Clean
16 Cash 25 Wild Night Out
21 Cash 34 Trip to Dayton
8 Cash 60 Trip to Boston
17 Joans Gas 25。1 Gas
5 Joes Stale Dent 150 Groceries
4 Local Utilities 98 Gas
1 Ma Bell 150 Have sons next time
3 Ma Bell 200。32 Cellular Phone
2 Reading R。R 。245。34 Train to Chicago
分析
在这个例子中 PAYEE 按正序排列而 REMARK 按逆序排列 请注意 CASH 中的
REMARK 是怎样相对于 PAYEE 排序的
技巧 假如你已经知道了你想要进行排序的列是表中的第一列的话 那么你可以用 ORDER
BY 1 来代替输入列的名字 见下例
INPUT/OUTPUT
SQL》 SELECT * FROM CHECKS ORDER BY 1
CHECK# PAYEE AMOUNT REMARKS
1 Ma Bell 150 Have sons next time
2 Reading R。R 。245。34 Train to Chicago
3 Ma Bell 200。32 Cellular Phone
4 Local Utilities 98 Gas
5 Joes Stale Dent 150 Groceries
8 Cash 60 Trip to Boston
9 Abes Cleaners 24。35 X…Tra Starch
16 Cash 25 Wild Night Out
17 Joans Gas 25。1 Gas
20 Abes Cleaners 10。5 All Dry Clean
21 Cash 34 Trip to Dayton
分析
它的结果与你在今天的早些时候写下的这个语句的结果是一样的
SELECT * FROM CHECKS ORDER BY CHECK#
EMAIL wyhsillypig@163。 105
…………………………………………………………Page 106……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
GROUP BY 子句
在第三天时我们学习了汇总类函数 COUNT SUM AVG MIN MAX 如果你想
看一下支出的总费用你可以用如下语句
INPUT
SELECT * FROM CHECKS
下表是修改以后的 CHECKS 表
CHECKNUM PAYEE AMOUNT REMARKS
1 Ma Bell 150 Have sons next time
2 Reading R。R 。245。34 Train to Chicago
3 Ma Bell 200。33 Cellular Phone
4 Local Utilities 98 Gas
5 Joes Stale Dent 150 Groceries
16 Cash 25 Wild Night Out
17 Joans Gas 25。1 Gas
9 Abes Cleaners