有关SQL查询的一个疑问

ynney_2011 2012-07-19 10:57:07
假设有一个“职工”表,表结构如下:(14分)
职工号 姓名 年龄 月工资 部门号 电话 办公室
1 张三 25 2000 1 12345 101
2 李四 26 1500 1 54321 102
3 王五 23 900 2 23456 201

…..
然后我要查找每个部门的最高月工资
可以写这样的语句吗?
SELECT MAX(月工资)
FROM 职工AS A, 职工 AS B
WHERE A.部门号 = B.部门号

这样得到的是其中一个部门的最高月工资,还是各个部门的最高月工资都能列出来?
...全文
223 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjin0919 2012-07-24
  • 打赏
  • 举报
回复
触发器我不会用啊
xiaojiaoduo 2012-07-23
  • 打赏
  • 举报
回复
简单点,用触发器!
xiaojiaoduo 2012-07-23
  • 打赏
  • 举报
回复
简单点触发器
以学习为目的 2012-07-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
SQL code

select a.部門名,max(b.月工資) 最高月工資
from 部門 a join 職工 b on a.id = b.部門號
group by a.部門名
[/Quote]
+1
wukaijie2012 2012-07-19
  • 打赏
  • 举报
回复
二楼的正解
AcHerat 元老 2012-07-19
  • 打赏
  • 举报
回复

select a.部門名,max(b.月工資) 最高月工資
from 部門 a join 職工 b on a.id = b.部門號
group by a.部門名
快溜 2012-07-19
  • 打赏
  • 举报
回复
SELECT MAX(月工资)
FROM 职工 group by 部门号
稻庄 2012-07-19
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 的回复:]
楼主啊,select语句千变万化,一种结果可以有不同的表现方式,你自己所展现的那种写法,查出来肯定只有一个部门的数据结果
[/Quote]

是这样
ynney_2011 2012-07-19
  • 打赏
  • 举报
回复
这个是原题,请各位帮着看一下:

7:假设有一个“职工”表,表结构如下:(14分)
职工号 姓名 年龄 月工资 部门号 电话 办公室
1 张三 25 2000 1 12345 101
2 李四 26 1500 1 54321 102
3 王五 23 900 2 23456 20
...............
................
................
问题:
查询每个部门中月工资最高的“职工号”的SQL查询语句如下:
SELECT 职工号
FROM 职工 AS A
WHERE 月工资 = (SELECT MAX(月工资)
FROM 职工 AS B
WHERE A.部门号 = B.部门号);
1:请简要的说明该查询语句对查询效率的影响(6分)
2:对该查询语句进行修改,使它既可以完成相同的功能,又可以提高查询效率。(8分)
ynney_2011 2012-07-19
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 的回复:]
楼主啊,select语句千变万化,一种结果可以有不同的表现方式,你自己所展现的那种写法,查出来肯定只有一个部门的数据结果
[/Quote]
哎呀~~~ 你确定????? 我也觉得是一个部门的数据结果! 就是我不确定
zy5251zd_net 2012-07-19
  • 打赏
  • 举报
回复
楼主啊,select语句千变万化,一种结果可以有不同的表现方式,你自己所展现的那种写法,查出来肯定只有一个部门的数据结果
zy5251zd_net 2012-07-19
  • 打赏
  • 举报
回复
楼主啊,select语句千变万化,一种结果可以有不同的表现方式,你自己所展现的那种写法,查出来肯定只有一个部门的数据结果
jakecheng 2012-07-19
  • 打赏
  • 举报
回复
declare @tab table(id int,name char(10),age int,monthMoney int,dept int,phoneNumber char(10),bgs int);
insert into @tab values(1,'jake',25,2000,1,'12345',101)
insert into @tab values(2,'tom',25,2500,1,'12345',101)
insert into @tab values(3,'jhon',25,900,2,'12345',101)

select dept,max(monthMoney) from @tab group by dept
以学习为目的 2012-07-19
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 的回复:]
引用 12 楼 的回复:
樓主,下邊的回覆都是正確的,不過返回的結果集不同而已,看樓主你需要那種就用哪個。

你好,既然都是正确的,为什么需要向你那么复杂的表示呢 一楼的就非常简单呀
[/Quote]

根据你的情况选择哈,小三的写法是考虑了一般实际情况中 部分和职工是分开的两个表存储的,所以就是加了一个联合查询而已。没有复杂啊

按LZ给的表内容看,职工表中部门只是一个编号,肯定有一个部门表的吧。你要查每个部门的最高月工资,肯定要联合职工表和部门表的吧
ynney_2011 2012-07-19
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 的回复:]
樓主,下邊的回覆都是正確的,不過返回的結果集不同而已,看樓主你需要那種就用哪個。
[/Quote]
你好,既然都是正确的,为什么需要向你那么复杂的表示呢 一楼的就非常简单呀
AcHerat 元老 2012-07-19
  • 打赏
  • 举报
回复
樓主,下邊的回覆都是正確的,不過返回的結果集不同而已,看樓主你需要那種就用哪個。
ynney_2011 2012-07-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
SELECT MAX(月工资)
FROM 职工 group by 部门号
[/Quote]
这个为什么不对呀?
ynney_2011 2012-07-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
引用 2 楼 的回复:
SQL code

select a.部門名,max(b.月工資) 最高月工資
from 部門 a join 職工 b on a.id = b.部門號
group by a.部門名

+1
[/Quote]
如果我这样写呢?对吗?
SELECT 职工号, MAX(月工资)
FROM 职工
GROUP BY 部门号
ynney_2011 2012-07-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
SQL code

select a.部門名,max(b.月工資) 最高月工資
from 部門 a join 職工 b on a.id = b.部門號
group by a.部門名
[/Quote]
不考虑效率问题,我这样写对吗? 能得到结果吗?

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧