踏踏实实练习SQL--day08

简介: 踏踏实实练习SQL--day08

即时订单比例

题目需求

订单配送中,如果期望配送日期和下单日期相同,称为即时订单,如果期望配送日期和下单日期不同,称为计划订单。

请从配送信息表(delivery_info)中求出每个用户的首单(用户的第一个订单)中即时订单的比例,保留两位小数,以小数形式显示。期望结果如下:

percentage

0.5

image.png

知识点:

指定精度取整函数: round

语法 round(double a, int d)

返回值 DOUBLE

说明 返回指定精度d的double类型

hive> select round(3.1415926,4) from iteblog;

3.1416

select
    round(sum(if(order_date==custom_date,1,0))/count(*),2) percentage
from
(select
order_id,user_id,order_date,custom_date,row_number() over (partition by user_id order by order_id) rk
from delivery_info1)t1
where rk=1

向用户推荐朋友收藏的商品

题目需求

现需要请向所有用户推荐其朋友收藏但是用户自己未收藏的商品请从好友关系表(friendship_info和收藏表(favor_info中查询出应向哪位用户推荐哪些商品。期望结果如下

1)部分结果展示

user_id用户id

sku_id(应向该用户推荐的商品id

101

2

101

4

101

7

101

9

101

8

101

11

101

1

image.png

知识点:

collect_list 收集并形成list集合,结果不去重
语法:collect_list(col)
返回值:array
说明:将某分组内该字段的所有值收集成为一个数组,结果不去重
hive>
select 
  sex,
  collect_list(job)
from
  employee
group by 
  sex
结果:
 ["行政","研发","行政","前台"]
 ["销售","研发","销售","前台"]
2)collect_set 收集并形成set集合,结果去重
语法:collect_set(col)
返回值:array
说明:将某分组内该字段的所有值收集成为一个数组,结果去重
hive>
select 
  sex,
  collect_set(job)
from
  employee
group by 
  sex
结果:
 ["行政","研发","前台"]
 ["销售","研发","前台"]
--1.先是每个人朋友都有谁
2.朋友都收藏了那些商品
select user_id,sku_id
from
(select
  distinct
  user1_id,
  sku_id
from
  (
    select
      user1_id,
      user2_id
    from
      friendship_info
    UNION
    select
      user2_id,
      user1_id
    from
      friendship_info
  ) t1
  left join favor_info on t1.user2_id = favor_info.user_id)t2
#自己收藏的商品(集合相减),分装成数组
  left join
  (
      select user_id,collect_list(sku_id) skus
  from favor_info
  group by user_id
  )t3
  on t2.user1_id=t3.user_id
  where !array_contains(skus,sku_id);
相关文章
|
1月前
踏踏实实练习SQL--day09
踏踏实实练习SQL--day09
16 1
|
1月前
踏踏实实练习SQL--day05
踏踏实实练习SQL--day05
31 1
|
16天前
|
SQL 人工智能 算法
【SQL server】玩转SQL server数据库:第二章 关系数据库
【SQL server】玩转SQL server数据库:第二章 关系数据库
52 10
|
1月前
|
SQL 数据库 数据安全/隐私保护
Sql Server数据库Sa密码如何修改
Sql Server数据库Sa密码如何修改
|
2月前
|
SQL 算法 数据库
【数据库SQL server】关系数据库标准语言SQL之数据查询
【数据库SQL server】关系数据库标准语言SQL之数据查询
96 0
|
26天前
|
SQL
启动mysq异常The server quit without updating PID file [FAILED]sql/data/***.pi根本解决方案
启动mysq异常The server quit without updating PID file [FAILED]sql/data/***.pi根本解决方案
17 0
|
16天前
|
SQL 算法 数据库
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
88 6
|
3天前
|
SQL 数据管理 关系型数据库
如何在 Windows 上安装 SQL Server,保姆级教程来了!
在Windows上安装SQL Server的详细步骤包括:从官方下载安装程序(如Developer版),选择自定义安装,指定安装位置(非C盘),接受许可条款,选中Microsoft更新,忽略警告,取消“适用于SQL Server的Azure”选项,仅勾选必要功能(不包括Analysis Services)并更改实例目录至非C盘,选择默认实例和Windows身份验证模式,添加当前用户,最后点击安装并等待完成。安装成功后关闭窗口。后续文章将介绍SSMS的安装。
6 0
|
11天前
|
SQL 安全 网络安全
IDEA DataGrip连接sqlserver 提示驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接的解决方法
IDEA DataGrip连接sqlserver 提示驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接的解决方法
25 0
|
16天前
|
SQL 存储 数据挖掘
数据库数据恢复—RAID5上层Sql Server数据库数据恢复案例
服务器数据恢复环境: 一台安装windows server操作系统的服务器。一组由8块硬盘组建的RAID5,划分LUN供这台服务器使用。 在windows服务器内装有SqlServer数据库。存储空间LUN划分了两个逻辑分区。 服务器故障&初检: 由于未知原因,Sql Server数据库文件丢失,丢失数据涉及到3个库,表的数量有3000左右。数据库文件丢失原因还没有查清楚,也不能确定数据存储位置。 数据库文件丢失后服务器仍处于开机状态,所幸没有大量数据写入。 将raid5中所有磁盘编号后取出,经过硬件工程师检测,没有发现明显的硬件故障。以只读方式将所有磁盘进行扇区级的全盘镜像,镜像完成后将所
数据库数据恢复—RAID5上层Sql Server数据库数据恢复案例