当前位置: 首页 > news >正文

网站开发可能存在的困难网站后台免费模板

网站开发可能存在的困难,网站后台免费模板,沈阳网站制作思路网络,p2p网站开发维护目录 1 题目2 建表语句3 题解 1 题目 有用户账户表,包含年份,用户id和值,请按照年份分组,取出值前两小和前两大对应的用户id,需要保持值最小和最大的用户id排首位。 样例数据 ------------------------- | year | user_id | v…

目录

  • 1 题目
  • 2 建表语句
  • 3 题解

1 题目


有用户账户表,包含年份,用户id和值,请按照年份分组,取出值前两小和前两大对应的用户id,需要保持值最小和最大的用户id排首位。

样例数据

+-------+----------+--------+
| year  | user_id  | value  |
+-------+----------+--------+
| 2022  | A        | 30     |
| 2022  | B        | 10     |
| 2022  | C        | 20     |
| 2023  | A        | 40     |
| 2023  | B        | 50     |
| 2023  | C        | 20     |
| 2023  | D        | 30     |
+-------+----------+--------+

期望结果

+-------+-----------------+-----------------+
| year  | max2_user_list  | min2_user_list  |
+-------+-----------------+-----------------+
| 2022  | A,C             | B,C             |
| 2023  | B,A             | C,D             |
+-------+-----------------+-----------------+

2 建表语句


--建表语句
create table if not exists t_amount
(year    string,user_id string,value   bigint
)ROW FORMAT DELIMITEDFIELDS TERMINATED BY ','STORED AS orc;--插入数据insert into t_amount(year, user_id, value)
values ('2022', 'A', 30),('2022', 'B', 10),('2022', 'C', 20),('2023', 'A', 40),('2023', 'B', 50),('2023', 'C', 20),('2023', 'D', 30)

3 题解


(1)row_number函数根据年份分组,value正排和倒排得到两个序列

select user_id, year, value, row_number() over (partition by year order by value desc) as desc_rn, row_number() over (partition by year order by value)      as rn
from t_amount

执行结果

+----------+-------+--------+----------+-----+
| user_id  | year  | value  | desc_rn  | rn  |
+----------+-------+--------+----------+-----+
| B        | 2022  | 10     | 3        | 1   |
| C        | 2022  | 20     | 2        | 2   |
| A        | 2022  | 30     | 1        | 3   |
| C        | 2023  | 20     | 4        | 1   |
| D        | 2023  | 30     | 3        | 2   |
| A        | 2023  | 40     | 2        | 3   |
| B        | 2023  | 50     | 1        | 4   |
+----------+-------+--------+----------+-----+

(2)根据年份分组,取出value最大user_id,第二大user_id,最小user_id,第二小user_id

根据年份分组,取出每年最大、第二大,最小、第二小用户ID。使用 if 对desc_rn,rn进行判断,对符合条件的数据取出 user_id,其他去null,然后使用聚合函数取出结果。

select year,max(if(desc_rn = 1, user_id, null)) as max1_user_id,max(if(desc_rn = 2, user_id, null)) as max2_user_id,max(if(rn = 1, user_id, null))      as min1_user_id,max(if(rn = 2, user_id, null))      as min2_user_id
from (select user_id, year, value, row_number() over (partition by year order by value desc) as desc_rn, row_number() over (partition by year order by value)      as rnfrom t_amount) t1
group by year

执行结果

+-------+---------------+---------------+---------------+---------------+
| year  | max1_user_id  | max2_user_id  | min1_user_id  | min2_user_id  |
+-------+---------------+---------------+---------------+---------------+
| 2022  | A             | C             | B             | C             |
| 2023  | B             | A             | C             | D             |
+-------+---------------+---------------+---------------+---------------+

(3)按照顺序拼接,得到最终结果

按照题目要求,进行字符拼接

  • 拼接max1_user_id、max2_user_id为max2_list;
  • 拼接min1_user_id、min2_user_id为min2_list;
select year,concat(max(if(desc_rn = 1, user_id, null)), ',',max(if(desc_rn = 2, user_id, null))) as max2_user_list,concat(max(if(rn = 1, user_id, null)), ',',max(if(rn = 2, user_id, null)))      as min2_user_list
from (select user_id, year, value, row_number() over (partition by year order by value desc) as desc_rn, row_number() over (partition by year order by value)      as rnfrom t_amount) t1
group by year

执行结果

+-------+-----------------+-----------------+
| year  | max2_user_list  | min2_user_list  |
+-------+-----------------+-----------------+
| 2022  | A,C             | B,C             |
| 2023  | B,A             | C,D             |
+-------+-----------------+-----------------+
http://www.yayakq.cn/news/407356/

相关文章:

  • 南充房管局网站查询房产企业网站用免费程序
  • 网站是哪个公司做的成品网站w在线观看
  • 网站建设公司的前景深圳网警
  • 全网霸屏推广系统广州网站优化排名
  • 怎么查网站找谁做的扬中门户
  • 网站的排名和什么因素有关系广东湛江免费做网站
  • 网站优秀设计方案注册公司费用跟后期费用
  • 网站建设noajt上海房地产信息网官网
  • 重庆多功能网站建设品牌广告文案
  • 五棵松网站建设濮阳建站公司哪个好
  • 做网站用sql和mysql遵义做推广网站
  • 如何做网站百科佛山个人制作网站公司
  • 触屏网站建设正能量网站下载
  • 四川建设厅电话网站慈云寺网站建设
  • 淘口令微信网站怎么做官方网站建设 磐石网络多少费用
  • 同城分类信息网站建设汇中建设 官方网站
  • 百度刷自己网站的关键词区块链网站怎么做
  • 桂林广告公司网站建设新网站如何被网站收录
  • 网站到期续费要多少钱网站建设需要多少钱文档
  • 南京市住房城乡建设门户网站城乡建设局网站首页
  • 网站建设报价方案.xls三室一厅装修效果图
  • 免费网站后台管理系统南宁网站建设哪家公
  • 网站群建设技术方案重庆市建设工程信息网查询人员
  • 网站建设合同属于什么税目建设网站的情况说明书
  • 网站开发培训训网站地图的使用
  • 做网站生意不赚钱做网站的术语
  • 中国国际贸易网站邯郸网站建设选哪家
  • 做电影网站要怎么拿到版权wordpress使用缩略图
  • 出境旅游哪个网站做的好南宁网站建设外包
  • 网站改版如何做301现在公众号做电影网站的发展