数据结构如下:
Create table tab_order(
user_id STRING COMMENT '用户id '
,order_id String COMMENT '订单号'
,pro_id String COMMENT '商品ID'
,pro_qty String COMMENT '商品数量'
,pro_price String COMMENT '商品单价'
,province String COMMENT '省份'
,city String COMMENT '城市'
)
1. 要求写sql统计每个省份的订单数量,输出字段为省份、订单数
2. 请写sql统计订单数在全国排名前1/4的城市,输出字段为:省份、城市、所在全国的排名
3. 请写sql统计每个省份订单金额排名前10的城市以及对应的订单金额和排名,输出结构为:省份、城市、订单金额、所在省份排名
都是用group by 和 limit结合起来 就可以实现的
如下:
Create table tab_order(
user_id STRING COMMENT '用户id '
,order_id String COMMENT '订单号'
,pro_id String COMMENT '商品ID'
,pro_qty String COMMENT '商品数量'
,pro_price String COMMENT '商品单价'
,province String COMMENT '省份'
,city String COMMENT '城市'
)
-- 1. 要求写sql统计每个省份的订单数量,输出字段为省份、订单数
select province,count(0) from tab_order group by province;
-- 2. 请写sql统计订单数在全国排名前1/4的城市,输出字段为:省份、城市、所在全国的排名
select * from (
SELECT province,city,@rownum:=@rownum + 1 AS rank
FROM
(SELECT province,city,count(0) cnt FROM tab_order
group by province,city ORDER BY cnt desc) AS a
,(SELECT @rownum:=0) AS b
) x where
x.rank <= (select count(0) from (SELECT count(0) FROM tab_order group by province,city) y )*1/4
-- 3. 请写sql统计每个省份订单金额排名前10的城市以及对应的订单金额和排名,输出结构为:省份、城市、订单金额、所在省份排名
您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632