一道SQL笔试题
表结构:
TABLE t1 (
[ID] [int] IDENTITY (1, 1) NOT NULL ,
[s_date] [datetime] NOT NULL DEFAULT (getdate()),
[Customer_id] [varchar] (50) DEFAULT ('0'),
[product_id] [varchar] (50) DEFAULT ('0'),
[Amt] [int] NOT NULL DEFAULT (0),
)
[ID] [int] IDENTITY (1, 1) NOT NULL ,
[s_date] [datetime] NOT NULL DEFAULT (getdate()),
[Customer_id] [varchar] (50) DEFAULT ('0'),
[product_id] [varchar] (50) DEFAULT ('0'),
[Amt] [int] NOT NULL DEFAULT (0),
)
问题:
1.写SQL取出表t1的第15~19行的记录。
2.写SQL删除表t1中的重复记录。
3.写SQL对Amt字段按月汇总,并按Customer_id分组。
4.写SQL实现下表,其中销量为Amt的总和。
年份 | 1月销量 | 2月销量 | 3月销量 | 4月销量 | 5月销量 | 6月销量 | 7月销量 | 8月销量 | 9月销量 | 10月销量 | 11月销量 | 12月销量 |
…… | ||||||||||||
2005 | ||||||||||||
2006 | ||||||||||||
2007 | ||||||||||||
…… |
对于第4题不知道有没有更好的方法?
我的答案如下:
1)题:
SELECT TOP 5 * FROM [t1] WHERE [ID] NOT IN(SELECT TOP 14 [ID] FROM [t1])
2)题:
DELETE FROM t1 WHERE
exists(select [ID] from t1 as t2 where t1.customer_id=t2.customer_id and t1.product_id=t2.product_id and t1.amt=t2.amt and t1.id<t2.id)
exists(select [ID] from t1 as t2 where t1.customer_id=t2.customer_id and t1.product_id=t2.product_id and t1.amt=t2.amt and t1.id<t2.id)
3)题:
SELECT MONTH(s_date) as C_Month, [Customer_id], SUM(Amt) as Sum_Amt FROM [t1]
group by MONTH(s_date), [Customer_id]
group by MONTH(s_date), [Customer_id]
4)题:
SQL