我把SQL该学的基本功能都学了,可是遇到这几个查询问题脑子还是绕不过来,希望大神们帮我解答这几个问题,多谢了
表格如图所示,有以下4个问题:
1.请计算每一位客人的总购买金额(Amount),总购买订单数,总购买产品件数(Quantity),同一个客人同一天的的订单算做一单,并筛选出总购买金额大于等于800的客人,按金额降序排列。2.请给出每个城市(City)的总店铺数,总购买人数和总购买金额(Amount),包含无购买记录的城市。3.请查找购买过CategoryA产品的客人,并计算每一位客人的平均订单金额(Amount),一个订单编号(OrderID)算作一单。4请查找每个城市(City)购买金额排名第二的客人,列出其购买城市,姓名和购买金额。
表格如图所示,有以下4个问题:
1.请计算每一位客人的总购买金额(Amount),总购买订单数,总购买产品件数(Quantity),同一个客人同一天的的订单算做一单,并筛选出总购买金额大于等于800的客人,按金额降序排列。2.请给出每个城市(City)的总店铺数,总购买人数和总购买金额(Amount),包含无购买记录的城市。3.请查找购买过CategoryA产品的客人,并计算每一位客人的平均订单金额(Amount),一个订单编号(OrderID)算作一单。4请查找每个城市(City)购买金额排名第二的客人,列出其购买城市,姓名和购买金额。
解决方案 »
- sql急。。。。。
- SQL 通过Excel读取时文本数据丢失,Imex=1加上也不灵,怎么解决
- 在asp.net中 select top @pageRecord * from语句为何老提示 @num错误
- 取当前添加记录的ID
- 怎樣把三條沒有任何關系且各條SQL語句字段數量都不相等的三條SQL語句合并成一條SQL語句﹖
- 找出数据库 erp 中所有记录数大于1000的表, 然后将它们列出来, 应该要用到@@ROWCOUNT, 但是不知道怎样做一个循环.
- 好心人帮个忙吧。
- 有关显示数字的格式问题
- 求教SQL模糊查询问题
- 新手上路———关于用数字建表名字的问题3Q~~
- 小弟自学sql server,求一部好点的视屏和书籍,以供我自学,谢谢大神了
- SQL日志文件的问题
[ORDER].Name,
SUM(Amount) AS Amount,
SUM(Quantity) AS Quantity,
COUNT(DISTINCT OrderDate)
FROM
[ORDER]
JOIN
product
ON [ORDER].product = product.product
JOIN
store
ON [ORDER].store = store.store
GROUP BY
[ORDER].Name
HAVING
SUM(Amount) >= 800;
store.City,
COUNT(DISTINCT store.store) AS 总店铺数,
COUNT(DISTINCT [ORDER].Name) AS 总购买人数,
SUM(Amount) AS 总购买金额
FROM
store
LEFT JOIN
[ORDER]
ON [ORDER].store = store.store
JOIN
product
ON [ORDER].product = product.product
GROUP BY
store.City
Name,
SUM(Amount) / COUNT(DISTINCT OrderId) AS 平均订单金额
FROM
[order]
WHERE
Name IN (
SELECT
[ORDER].Name
FROM
[ORDER]
JOIN
product
ON [ORDER].product = product.product
WHERE
Category = 'CategoryA'
)
GROUP BY
Name;
SELECT DISTINCT
s.[City],
t.[Name],
t.[sumAmout]
FROM (
SELECT [Name],
SUM([Amout]) AS sumAmout,
ROW_NUMBER() OVER(PARTITION BY [Name] ORDER BY SUM([Amout]) DESC) AS rid
FROM [Order]
GROUP BY
[Name]
) AS t
INNER JOIN [Order] AS o
ON t.[Name] = o.[Name]
INNER JOIN [Store] AS s
ON o.[Store] = s.[Store]
WHERE t.rid = 2
*
FROM
(
SELECT
*,
ROW_NUMBER() OVER (PARTITION BY
city
ORDER BY
Amount DESC
) rn
FROM
(
SELECT
[ORDER].Name,
store.City,
SUM(Amount) AS Amount
FROM
[ORDER]
JOIN
store
ON [ORDER].store = store.store
GROUP BY
[ORDER].Name,
store.City
) t
) t1
WHERE
rn = 2;