下面是一个设备管理数据库,包括四张表。
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
设备清单表
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />
设备大修表
部门代码表
增值表
问题:
1.
找出价格低于
20000
元的设备名称、启用日期与部门
Select
名称
,
启用日期
,
部门
,
价格
from
设备清单表
;
where
价格
<20000
2.
例
:
查询大修过的设备的编号、名称和部门名
Select
设备大修表
.
编号
,
设备清单表
.
名称
,
部门代码表
.
名称
;
as
部门名
from
设备清单表
,
设备大修表
,
部门代码表
;
where
设备大修表
.
编号
=
设备清单表
.
编号
;
And
部门代码表
.
代码
=
设备清单表
.
部门
3.
将设备清单表的记录按部门升序排列
,
部门相同时按价格降序排列
.
Select * from
设备清单表
order by
部门
,
价格
desc
4.
求出每一设备的增值金额
.
Select
设备清单表
.
名称
,sum(
增值表
.
增值
) from
增值表
,
设备清单表
;
Where
设备清单表
.
编号
=
增值表
.
编号
group by
增值表
.
编号
5.
求出各部门的设备总价
方法一
:
Select
部门
,sum(
价格
) from
设备清单表
group by
部门
方法二
:
Select
设备清单表
.
部门
,sum(
设备清单表
.
价格
),
部门代码表
.
名称
;
from
设备清单表
,
部门代码表
;
where
部门代码表
.
代码
=
设备清单表
.
部门
;
group by
设备清单表
.
部门
6.
找出大修费用已超过
5000
元的设备
,
并将结果存入数组
y
Select
编号
from
设备大修表
group by
编号
;
Having sum(
费用
)>5000 Into array y
注意:
在存在
group by
子句时
,
设置查询条件应用
having
子句
,
而不是
where
子句
.
7.
求出设备总价超过
20000
元的部门
Select
部门代码表
.
名称
,sum(
设备清单表
.
价格
) ;
from
部门代码表
,
设备清单表
;
where
部门代码表
.
代码
=
设备清单表
.
部门
;
group by
设备清单表
.
部门
having sum(
设备清单表
.
价格
) >20000
8.
查找增值设备的编号、名称及每次增值的金额。
方法
1
SELECT
设备清单表
.
编号
,
设备清单表
.
名称
,
增值表
.
增值
;
FROM
设备清单表
INNER JOIN
增值表
;
ON
设备清单表
.
编号
=
增值表
.
编号
或者
SELECT
设备清单表
.
编号
,
设备清单表
.
名称
,
增值表
.
增值
;
FROM
增值表
INNER JOIN
设备清单表
;
ON
设备清单表
.
编号
=
增值表
.
编号
方法
2
SELECT
设备清单表
.
编号
,
设备清单表
.
名称
,
增值表
.
增值
;
FROM
设备清单表
,
增值表
;
WHERE
设备清单表
.
编号
=
增值表
.
编号
9.
试汇总设备的大修费用,要求:
(1)
编号头三位小于
038
(2)
显示设备名称与大修费用小计
(3)
显示结果按大修费用小计降序排列
方法一
:
SELECT
设备清单表
.
名称
,SUM(
设备大修表
.
费用
) ;
FROM
设备清单表
INNER JOIN
设备大修表
;
ON
设备清单表
.
编号
=
设备大修表
.
编号
;
WHERE LEFT(
设备大修表
.
编号
,3)<“<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />038”;
GROUP BY
设备大修表
.
编号
ORDER BY 2 DESC
方法二
:
SELECT
设备清单表
.
名称
,SUM(
设备大修表
.
费用
);
FROM
设备清单表
,
设备大修表
;
WHERE
设备大修表
.
编号
=
设备清单表
.
编号
AND ;
LEFT(
设备清单表
.
编号
,3)<“038”;
GROUP BY
设备大修表
.
编号
;
ORDER BY 2 DESC
10.
查询价格小于
10
万元的设备的启用日期。
Select
名称
,
启用日期
from
设备清单表
where
价格
<100000
11.
查询车间使用的设备或价格不小于
10
万元的设备的部门名,查询结果按启用日期从小到大排列。
Select
设备清单表
.
名称
,
设备清单表
.
价格
,
设备清单表
.
启用日期
,;
部门代码表
.
名称
from
设备清单表
,
部门代码表
;
Where
设备清单表
.
部门
=
部门代码表
.
代码
;
and (“
车间
”$
部门代码表
.
名称
or
设备清单表
.
价格
>=100000);
order by
设备清单表
.
启用日期
12.
查询
1990
年启用的设备的名称和部门名。
Select
设备清单表
.
名称
,
部门代码表
.
名称
,
设备清单表
.
启用日期
;
from
设备清单表
,
部门代码表
;
where
设备清单表
.
部门
=
部门代码表
.
代码
and ;
year(
设备清单表
.
启用日期
)=1990
13.
查询大修过的设备的编号和名称,查询结果输出到表
RESULT.DBF
。
Select
设备大修表
.
编号
,
设备清单表
.
名称
;
From
设备清单表
,
设备大修表
;
Where
设备清单表
.
编号
=
设备大修表
.
编号
into dbf result.dbf
14.
查询有增值的设备的设备名和部门名。
Select
设备清单表
.
名称
,
部门代码表
.
名称
,
增值表
.
增值
;
From
设备清单表
,
部门代码表
,
增值表
;
Where
设备清单表
.
部门
=
部门代码表
.
代码
and ;
设备清单表
.
编号
=
增值表
.
编号
15.
试算出
1992
年启用的主要设备的台数。
Select count(
编号
) from
设备清单表
where
主要设备
=.t. ;
And year(
启用日期
)=1992
16.
试算出大修过的设备中每种设备大修费用的平均值。
Select
设备清单表
.
名称
,avg(
设备大修表
.
费用
) ;
From
设备清单表
,
设备大修表
;
Where
设备清单表
.
编号
=
设备大修表
.
编号
;
group by
设备大修表
.
编号
17
.查询最早启用和最晚启用的设备。
方法一
:
Select max(
启用日期
),min(
启用日期
) from
设备清单表
;
Into array x
Select
名称
,
启用日期
from
设备清单表
;
Where
启用日期
=x(1) or
启用日期
=x(2)
方法二
:
Select
名称
,
启用日期
from
设备清单表
;
where
启用日期
=(Select max(
启用日期
) from
设备清单表
) ;
or
启用日期
=(Select min(
启用日期
) from
设备清单表
)
注释
:
方法二属于嵌套查询
.
转载于:https://blog.51cto.com/pipicool032/78399