SQL sever 数据库统计查询和组合查询

商品(编号,品名,进价,库存,售价,厂商编号) 
顾客(卡号,姓名,电话,积分)
厂商(编号,厂址,名称、电话)
销售(顾客卡号,商品编号,数量,日期)
根据上面基本表的信息完成下列查询。
1 查询积分最高的顾客姓名
2 查询销售数量1000以上的商品的厂商电话。
3 查询生产商品5种以上的厂商信息。
4 查询没有顾客买的商品信息。

建表语句

create table [dbo].[Guke]
(Gno char(10) primary key,
Gname char(20),
G_tel smallint,
jifen smallint
);
create table [dbo].[Changshang]
(Cno char(10)primary key,
addre char(40),
Cname char(20),
C_tel smallint
);

create table [dbo].[Shangpin]
(Sno char(10) primary key,
Sname char(10),
jin_jia smallint,
kucun smallint,
shou_jia smallint,
Cno char(10),
foreign key(Cno)references Changshang(Cno)


);


create table [dbo].[Xiaoshou]
(Gno char(10),
Sno char(10),
shuliang smallint,
X_time char(20),
primary key(Gno,Sno),
foreign key(Sno)references Shangpin(Sno),
foreign key(Gno)references Guke(Gno)
);

--查询积分最高的客户姓名

--方法1
SELECT Gname
FROM Guke
WHERE jifen = ( SELECT MAX(jifen)
FROM Guke
)
------------------------ 
--方法2 
SELECT TOP 1
Gname
FROM Guke
ORDER BY jifen DESC 
--------------------------------------------------
--查询销售数量1000以上的商品的厂商电话
SELECT DISTINCT
C.C_tel
FROM ( SELECT Sno ,
SUM(shuliang) AS shuliang
FROM Xiaoshou
GROUP BY Sno
) A
LEFT JOIN Shangpin B ON A.Sno = B.Sno
LEFT JOIN Changshang C ON B.Cno = C.Cno
WHERE A.shuliang > 1000
--------------------------------------------------
--查询生产商品5种以上的厂商信息
SELECT B.*
FROM Shangpin A
LEFT JOIN Changshang B ON A.Cno = B.Cno
GROUP BY B.Cno ,
B.addre ,
B.Cname ,
B.C_tel
HAVING COUNT(B.Cno) > 5
--------------------------------------------------
--查询没有顾客买的商品和购买数量少于3个的商品
--方法1
SELECT DISTINCT
A.*
FROM Shangpin A
LEFT JOIN ( SELECT Sno ,
SUM(shuliang) AS shuliang
FROM Xiaoshou
GROUP BY Sno
) B ON A.Sno = B.Sno
WHERE  B.shuliang IS NULL
-------------------------
--方法2
SELECT A.*
FROM Shangpin A
WHERE NOT EXISTS (
SELECT B.Sno
FROM Xiaoshou B
WHERE B.Sno = A.Sno
GROUP BY B.Sno
HAVING SUM(shuliang) !=0 
)
### 回答1: 你可以使用以下SQL语句来查询表中的前200条数据: ``` SELECT TOP 200 * FROM [表名]; ``` 其中,[表名]应替换为实际表名。 例如,如果表名为 "orders",你可以使用以下语句来查询前200条数据: ``` SELECT TOP 200 * FROM orders; ``` 如果你想通过其他列排序,你可以使用ORDER BY子句,例如: ``` SELECT TOP 200 * FROM orders ORDER BY order_date; ``` 这将按照订单日期排序,并返回前200条记录。 ### 回答2: 要查询SQL Server数据库中表中的前200条数据,可以使用以下SQL语句: ```sql SELECT TOP 200 * FROM 表名; ``` 其中,"表名"是需要查询的表的名称。 上述语句将会返回表中的前200条记录的所有字段。如果只想返回特定的字段信息,可以将"*"替换为需要查询的字段名称。 注意,如果想按照特定的排序方式返回前200条数据(例如按照某一字段的升序或降序),可以在查询语句的末尾添加"ORDER BY"子句。例如,要按照某个字段的降序排列返回前200条数据,可以使用以下SQL语句: ```sql SELECT TOP 200 * FROM 表名 ORDER BY 字段名 DESC; ``` 其中,"字段名"是按照降序排序的字段名称。 希望以上解答对您有帮助! ### 回答3: 在SQL Server数据库查询表中的前200条数据可以使用SELECT TOP 200语句。下面是一个示例: SELECT TOP 200 * FROM 表名; 其中,“表名”是要查询的表的名称。这个查询语句会返回表中的前200条数据,包含所有的列。 如果只想返回表中的特定列,则可以替换“*”为想要选择的列的名称,多个列之间用逗号隔开。例如,如果只想返回表中的ID、姓名和年龄列的数据,可以使用以下查询语句: SELECT TOP 200 ID, 姓名, 年龄 FROM 表名; 请注意,查询结果的排序取决于表中数据的顺序。如果需要特定的排序,请在查询语句中使用ORDER BY子句。例如,如果希望按照ID列的升序结果返回,可以使用以下查询语句: SELECT TOP 200 * FROM 表名 ORDER BY ID ASC; 这样会返回表中前200条按ID升序排列的数据。 以上就是使用SQL Server数据库查询表中前200条数据的方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值