求教高手!!
SNO cname gname number
1 C女士 C供应商 2
2 L先生 E供应商 32
3 L先生 E供应商 4
4 H先生 A供应商 10
5 S女士 D供应商 34
6 C女士 E供应商 53
7 L先生 A供应商 12
9 H女士 I供应商 36在上面的销售视图中,列出客户购买哪个供应商的商品最多?要求用聚合函数!
SNO cname gname number
1 C女士 C供应商 2
2 L先生 E供应商 32
3 L先生 E供应商 4
4 H先生 A供应商 10
5 S女士 D供应商 34
6 C女士 E供应商 53
7 L先生 A供应商 12
9 H女士 I供应商 36在上面的销售视图中,列出客户购买哪个供应商的商品最多?要求用聚合函数!
-- Author : htl258(Tony)
-- Date : 2010-04-27 00:01:03
-- Version:Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86)
-- Jul 9 2008 14:43:34
-- Copyright (c) 1988-2008 Microsoft Corporation
-- Developer Edition on Windows NT 5.1 <X86> (Build 2600: Service Pack 3)
-- Blog : http://blog.csdn.net/htl258
--------------------------------------------------------------------------
--> 生成测试数据表:aIF NOT OBJECT_ID('[a]') IS NULL
DROP TABLE [a]
GO
CREATE TABLE [a]([SNO] INT,[cname] NVARCHAR(10),[gname] NVARCHAR(10),[number] INT)
INSERT [a]
SELECT 1,N'C女士',N'C供应商',2 UNION ALL
SELECT 2,N'L先生',N'E供应商',32 UNION ALL
SELECT 3,N'L先生',N'E供应商',4 UNION ALL
SELECT 4,N'H先生',N'A供应商',10 UNION ALL
SELECT 5,N'S女士',N'D供应商',34 UNION ALL
SELECT 6,N'C女士',N'E供应商',53 UNION ALL
SELECT 7,N'L先生',N'A供应商',12 UNION ALL
SELECT 9,N'H女士',N'I供应商',36
GO
--SELECT * FROM [a]-->SQL查询如下:
select top 1 gname,sumqty=SUM(number)
from a
group by gname
order by SUM(number) desc
/*
gname sumqty
---------- -----------
E供应商 89(1 行受影响)*/
C女士 E供应商 53
L先生 E供应商 32
H先生 A供应商 10
S女士 D供应商 34
H女士 I供应商 36
这样的才对的!
麻烦高手指教下!
-- Author : htl258(Tony)
-- Date : 2010-04-27 00:01:03
-- Version:Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86)
-- Jul 9 2008 14:43:34
-- Copyright (c) 1988-2008 Microsoft Corporation
-- Developer Edition on Windows NT 5.1 <X86> (Build 2600: Service Pack 3)
-- Blog : http://blog.csdn.net/htl258
--------------------------------------------------------------------------
--> 生成测试数据表:aIF NOT OBJECT_ID('[a]') IS NULL
DROP TABLE [a]
GO
CREATE TABLE [a]([SNO] INT,[cname] NVARCHAR(10),[gname] NVARCHAR(10),[number] INT)
INSERT [a]
SELECT 1,N'C女士',N'C供应商',2 UNION ALL
SELECT 2,N'L先生',N'E供应商',32 UNION ALL
SELECT 3,N'L先生',N'E供应商',4 UNION ALL
SELECT 4,N'H先生',N'A供应商',10 UNION ALL
SELECT 5,N'S女士',N'D供应商',34 UNION ALL
SELECT 6,N'C女士',N'E供应商',53 UNION ALL
SELECT 7,N'L先生',N'A供应商',12 UNION ALL
SELECT 9,N'H女士',N'I供应商',36
GO
--SELECT * FROM [a]
SELECT [cname],gname,number FROM A T WHERE [number]=(SELECT MAX(NUMBER) FROM A WHERE cname=T.cname)
/*
cname gname number
---------- ---------- -----------
S女士 D供应商 34
L先生 E供应商 32
H先生 A供应商 10
H女士 I供应商 36
C女士 E供应商 53(5 行受影响)
*/
INSERT [a]
SELECT 1,N'C女士',N'C供应商',2 UNION ALL
SELECT 2,N'L先生',N'E供应商',32 UNION ALL
SELECT 3,N'L先生',N'E供应商',4 UNION ALL
SELECT 4,N'H先生',N'A供应商',10 UNION ALL
SELECT 5,N'S女士',N'D供应商',34 UNION ALL
SELECT 6,N'C女士',N'E供应商',53 UNION ALL
SELECT 7,N'L先生',N'A供应商',12 UNION ALL
SELECT 9,N'H女士',N'I供应商',36
goselect m.* from
(
select cname , gname , sum(number) number from a group by cname , gname
) m
where not exists (select 1 from
(
select cname , gname , sum(number) number from a group by cname , gname
) n where n.cname = m.cname and number > m.number)
order by m.cnameselect m.* from
(
select cname , gname , sum(number) number from a group by cname , gname
) m
where number = (select max(number) from
(
select cname , gname , sum(number) number from a group by cname , gname
) n where n.cname = m.cname )
order by m.cnamedrop table a/*
cname gname number
---------- ---------- -----------
C女士 E供应商 53
H女士 I供应商 36
H先生 A供应商 10
L先生 E供应商 36
S女士 D供应商 34(所影响的行数为 5 行)cname gname number
---------- ---------- -----------
C女士 E供应商 53
H女士 I供应商 36
H先生 A供应商 10
L先生 E供应商 36
S女士 D供应商 34(所影响的行数为 5 行)*/
”
请问一下上面语句中的“A”“T”是代表两个不同的表吗?