leecode 数据库:1158. 市场分析 I

这篇具有很好参考价值的文章主要介绍了leecode 数据库:1158. 市场分析 I。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

数据导入:

SQL Schema:

Create table If Not Exists Users (user_id int, join_date date, favorite_brand varchar(10));
Create table If Not Exists Orders (order_id int, order_date date, item_id int, buyer_id int, seller_id int);
Create table If Not Exists Items (item_id int, item_brand varchar(10));
Truncate table Users;
insert into Users (user_id, join_date, favorite_brand) values ('1', '2018-01-01', 'Lenovo');
insert into Users (user_id, join_date, favorite_brand) values ('2', '2018-02-09', 'Samsung');
insert into Users (user_id, join_date, favorite_brand) values ('3', '2018-01-19', 'LG');
insert into Users (user_id, join_date, favorite_brand) values ('4', '2018-05-21', 'HP');
Truncate table Orders;
insert into Orders (order_id, order_date, item_id, buyer_id, seller_id) values ('1', '2019-08-01', '4', '1', '2');
insert into Orders (order_id, order_date, item_id, buyer_id, seller_id) values ('2', '2018-08-02', '2', '1', '3');
insert into Orders (order_id, order_date, item_id, buyer_id, seller_id) values ('3', '2019-08-03', '3', '2', '3');
insert into Orders (order_id, order_date, item_id, buyer_id, seller_id) values ('4', '2018-08-04', '1', '4', '2');
insert into Orders (order_id, order_date, item_id, buyer_id, seller_id) values ('5', '2018-08-04', '1', '3', '4');
insert into Orders (order_id, order_date, item_id, buyer_id, seller_id) values ('6', '2019-08-05', '2', '2', '4');
Truncate table Items;
insert into Items (item_id, item_brand) values ('1', 'Samsung');
insert into Items (item_id, item_brand) values ('2', 'Lenovo');
insert into Items (item_id, item_brand) values ('3', 'LG');
insert into Items (item_id, item_brand) values ('4', 'HP');

Pandas Schema:

data = [[1, '2018-01-01', 'Lenovo'], [2, '2018-02-09', 'Samsung'], [3, '2018-01-19', 'LG'], [4, '2018-05-21', 'HP']]
Users = pd.DataFrame(data, columns=['user_id', 'join_date', 'favorite_brand']).astype({'user_id':'Int64', 'join_date':'datetime64[ns]', 'favorite_brand':'object'})
data = [[1, '2019-08-01', 4, 1, 2], [2, '2018-08-02', 2, 1, 3], [3, '2019-08-03', 3, 2, 3], [4, '2018-08-04', 1, 4, 2], [5, '2018-08-04', 1, 3, 4], [6, '2019-08-05', 2, 2, 4]]
Orders = pd.DataFrame(data, columns=['order_id', 'order_date', 'item_id', 'buyer_id', 'seller_id']).astype({'order_id':'Int64', 'order_date':'datetime64[ns]', 'item_id':'Int64', 'buyer_id':'Int64', 'seller_id':'Int64'})
data = [[1, 'Samsung'], [2, 'Lenovo'], [3, 'LG'], [4, 'HP']]
Items = pd.DataFrame(data, columns=['item_id', 'item_brand']).astype({'item_id':'Int64', 'item_brand':'object'})
表结构:

表: Users

+----------------+---------+
| Column Name    | Type    |
+----------------+---------+
| user_id        | int     |
| join_date      | date    |
| favorite_brand | varchar |
+----------------+---------+

        user_id 是此表主键(具有唯一值的列)。
        表中描述了购物网站的用户信息,用户可以在此网站上进行商品买卖。

表: Orders

+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| order_id      | int     |
| order_date    | date    |
| item_id       | int     |
| buyer_id      | int     |
| seller_id     | int     |
+---------------+---------+

        order_id 是此表主键(具有唯一值的列)。
        item_id 是 Items 表的外键(reference 列)。
        (buyer_id,seller_id)是 User 表的外键。

表:Items

+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| item_id       | int     |
| item_brand    | varchar |
+---------------+---------+

        item_id 是此表的主键(具有唯一值的列)。

编写解决方案找出每个用户的注册日期和在 2019 年作为买家的订单总数。

以 任意顺序 返回结果表。

查询结果格式如下。

示例 1:
输入:
Users 表:
+---------+------------+----------------+
| user_id | join_date  | favorite_brand |
+---------+------------+----------------+
| 1       | 2018-01-01 | Lenovo         |
| 2       | 2018-02-09 | Samsung        |
| 3       | 2018-01-19 | LG             |
| 4       | 2018-05-21 | HP             |
+---------+------------+----------------+
Orders 表:
+----------+------------+---------+----------+-----------+
| order_id | order_date | item_id | buyer_id | seller_id |
+----------+------------+---------+----------+-----------+
| 1        | 2019-08-01 | 4       | 1        | 2         |
| 2        | 2018-08-02 | 2       | 1        | 3         |
| 3        | 2019-08-03 | 3       | 2        | 3         |
| 4        | 2018-08-04 | 1       | 4        | 2         |
| 5        | 2018-08-04 | 1       | 3        | 4         |
| 6        | 2019-08-05 | 2       | 2        | 4         |
+----------+------------+---------+----------+-----------+
Items 表:
+---------+------------+
| item_id | item_brand |
+---------+------------+
| 1       | Samsung    |
| 2       | Lenovo     |
| 3       | LG         |
| 4       | HP         |
+---------+------------+
输出:
+-----------+------------+----------------+
| buyer_id  | join_date  | orders_in_2019 |
+-----------+------------+----------------+
| 1         | 2018-01-01 | 1              |
| 2         | 2018-02-09 | 2              |
| 3         | 2018-01-19 | 0              |
| 4         | 2018-05-21 | 0              |
+-----------+------------+----------------+
预备知识

        本题使用到的 MySQL 函数的说明:

ifnull(x1, x2) :如果 x1 为 NULL, 返回 x2,否则返回 x1。

方法一:left join 和 group by

思路

        首先根据 Orders 表计算每个用户的订单数,通过 buyer_id 和 Users 表的 user_id 将两份数据结合,找到所有用户的注册时间和订单的数量。

        注意:用户订单的数量可能会 0,需要使用 ifnull 函数特殊处理这种数据。

算法

        使用 Orders 表计算每个用户的产品数。使用 group by 聚合每个用户的购买记录。使用 between 筛选出时间为 2019 年的数据。使用 count(order_id) 计算出每个用户的订单数。

Mysql
select buyer_id, count(order_id) cnt 
from Orders
where order_date between '2019-01-01' and '2019-12-31'
group by buyer_id


        使用 Users 表得到所有用户及其注册时间。并使用 left join,通过 user_id 和第一步的数据连接,求每个用户的订单数。 如果一个用户没有任何订单,那么第一步的数据中不会有这个用户的数据,最后的 orders_in_2019 会显示为 null,所以我们还需要使用 ifnull,如果数据为 null,将其改为 0。
 文章来源地址https://www.toymoban.com/news/detail-687685.html

Mysql代码
select Users.user_id as buyer_id, join_date, ifnull(UserBuy.cnt, 0) as orders_in_2019
from Users
left join (
    select buyer_id, count(order_id) cnt 
    from Orders
    where order_date between '2019-01-01' and '2019-12-31'
    group by buyer_id
) UserBuy
on Users.user_id = UserBuy.buyer_id

到了这里,关于leecode 数据库:1158. 市场分析 I的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 大数据与环境监测的市场需求分析

    环境监测在现代社会中发挥着越来越重要的作用,因为环境污染对人类健康和生态系统的影响不容忽视。随着大数据技术的发展,环境监测领域也逐渐向大数据技术转型,以提高监测数据的准确性、实时性和可靠性。本文将从市场需求的角度分析大数据与环境监测的关系,旨

    2024年04月17日
    浏览(19)
  • 2023婴幼儿奶粉市场数据分析(天猫数据中心)

    我国婴幼儿奶粉市场一直保持着相当大的规模,虽然近几年新生人口数量不断下降,但伴随消费者的消费升级不断加速、大龄孩童吃奶粉的时间延长等,整体来看,婴幼儿奶粉行业市场规模保持平稳。 根据鲸参谋电商数据分析平台的相关数据显示,2023年1月至4月,天猫平台上

    2024年02月16日
    浏览(35)
  • 京东数据平台:2023年Q3季度黄金市场数据分析

    继9月国内黄金市场持续上涨后,进入10月中下旬后,黄金行情再度反转,多家品牌金饰价格再次突破600元/克,达到611元/克。 今年以来,黄金行情不断走俏,销售市场也有明显增长。根据鲸参谋平台的数据显示,今年7月-9月,京东平台上黄金的销量为95万+,同比增长约12%;销

    2024年02月05日
    浏览(37)
  • 【市场分析】Temu数据采集销售额商品量占比分析数据分析接口Api

    temu电商平台是一个充满活力的电商平台,拥有多种商品类别和数万家店铺。在这个项目中我的任务是采集平台上的大量公开数据信息。通过数据采集,我旨在深入了解temu电商平台的产品分布、销售趋势和文本描述,以揭示有趣的见解。 通过Python我们采集到了102,2805款商品,

    2024年02月05日
    浏览(60)
  • 2023年7月京东护发市场数据分析(京东数据产品)

    如今,与面部护肤相比,多数消费者认为头皮也需要认真对待,这在年轻消费群体中体现的较为明显。 随着消费者对护发理念的认同感不断加深,人们日常居家洗护的步骤也更加精细、使用产品品类也愈加多样化。除传统的护发素、发膜等护发产品外,头部精华等新品类逐渐

    2024年02月10日
    浏览(37)
  • 2023年Q2京东小家电市场数据分析(京东数据运营)

    伴随人们对生活品质追求的提高,以及拥有新兴消费理念的年轻人逐渐成为消费主力,功能新潮、外观精致的小家电经常在电商平台销售榜单里“榜上有名”。本期我们便一起来分析Q2京东小家电市场中,一些较为热门的精致生活小电的行业大盘变动情况。 *咖啡机延续市场红

    2024年02月15日
    浏览(31)
  • Python爬虫与数据挖掘在外汇市场分析中的应用

    外汇市场是全球最大的金融市场之一,每天的交易量可以达到几万亿美元。深入了解外汇市场的趋势和变化对于投资者来说至关重要,因为即使是微小的价格波动也可能导致巨额利润或损失。从过去的历史数据中抽取经验教训,并使用数据挖掘算法来预测未来趋势,已成为投

    2024年02月12日
    浏览(37)
  • 2023年清洁电器行业数据分析:洗地机市场规模持续倍增,进入赛点

    洗地机作为清洁电器领域的明星品类,正在成为继扫地机器人之后拉动清洁电器市场大盘的又一核心动力。 在清洁电器领域,扫地机器人、洗地机和吸尘器是三大热门品类。截至今年9月份,根据鲸参谋平台的数据显示,吸尘器的规模继续大幅下滑,销量同比降低约19%,销额

    2024年02月07日
    浏览(42)
  • 大数据在零售业中的应用:客户行为分析和市场营销优化

    大数据在现代社会中发挥着越来越重要的作用,尤其是在零售业中,大数据技术已经成为企业竞争的核心能力。零售业中的大数据主要来源于客户的购物行为、购物历史、浏览记录、评价等,这些数据可以帮助企业更好地了解客户的需求、喜好和行为模式,从而实现客户行为

    2024年04月26日
    浏览(28)
  • 京东数据分析:2023厨房小电市场遇冷,空气炸锅等明星产品被抛弃

    过去几年间,宅经济的爆发带火了酸奶机、煮蛋器、豆浆机、空气炸锅、养生壶等,一众外观小巧、功能丰富、价格相对便宜的厨房小家电。但随着年轻人走出家门回归工作岗位,厨房小家电们却步入了艰难时刻。 如今,厨房小家电们似乎正在经历从爆红到爆冷的阶段。从市

    2024年02月08日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包