• 现在想获取一个手机号对应一个产品名的最新日期的一条记录(标签-sql)


    关注 码龄 粉丝数 原力等级 -- 被采纳 被点赞 采纳率 needhelp2 2024-08-08 19:19 采纳率: 14.3% 浏览 6 首页/ 大数据 / 现在想获取一个手机号对应一个产品名的最新日期的一条记录(标签-sql) sql大数据spark 如上图,现在想获取一个手机号对应一个产品名的最新日期的一条记录,这个sql怎么写?主要目的给数据进行去重,保留单个手机号对应的两个产品名的最新日期记录。或者用spark代码写也可以 收起 写回答 好问题 0 提建议 追加酬金 关注问题 微信扫一扫 点击复制链接 分享 邀请回答 编辑 收藏 删除 结题 收藏 举报 追加酬金 (90%的用户在追加酬金后获得了解决方案) 当前问题酬金 ¥ 0 (可追加 ¥500) ¥ 15¥ 20¥ 50¥ 100¥ 200 支付方式 扫码支付 二维码出错 点击刷新 支付金额 15 元 提供问题酬金的用户不参与问题酬金结算和分配 支付即为同意 《付费问题酬金结算规则》 结题 再想想 删除 再等等

    1条回答 默认 最新

    • 一直免费一直爽 2024-08-11 23:27
      关注

      以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

      要查询一个手机号码对应的一个产品名的最新日期的记录,我们可以使用SQL的GROUP BY语句以及ORDER BY子句。首先,我们需要确保您的数据库表结构中包含以下列:手机号、产品名和日期。然后,您可以使用以下SQL查询:

      SELECT T1.手机号, T1.产品名, MAX(T2.日期) as 最新日期
      FROM (
          SELECT 电话号码, '高潜' as 产品名, 日期 as `日期`
          FROM1
      ) AS T1,
      (
          SELECT 电话号码, '预审' as 产品名, 日期 as `日期`
          FROM2
      ) AS T2
      WHERE T1.电话号码 = T2.电话号码
      GROUP BY T1.电话号码, T1.产品名;
      

      这段SQL查询首先从两个表中选择匹配的行(即相同的电话号码),并按产品名对结果进行分组。然后,它将每个产品的最新日期作为新的列最新日期返回。

      请注意,您需要根据实际的数据表结构调整上述SQL查询中的表名和字段名称。如果您正在使用的是SQL Server或其他支持窗口函数的语言,可能还需要使用不同的函数来计算最大日期。此外,对于更复杂的数据集,您可能需要使用聚合函数(如MAX)来处理多个产品的最大日期。

      如果你希望在Spark中实现这一功能,可以参考以下示例:

      from pyspark.sql import SparkSession
      import pandas as pd
      
      # 创建SparkSession
      spark = SparkSession.builder.appName('找出特定手机号码对应的产品名的最大日期').getOrCreate()
      
      # 加载数据到DataFrame
      df = spark.createDataFrame([
          (1, "高潜", "2014-02-02"),
          (1, "预审", "2014-02-03"),
          (1, "预审", "2014-02-04"),
          (1, "高潜", "2014-02-05"),
          (2, "高潜", "2014-02-06"),
          (2, "高潜", "2014-02-07"),
          (2, "高潜", "2014-02-08"),
          (3, "预审", "2014-02-09"),
          (3, "预审", "2014-02-10"),
          (3, "预审", "2014-02-11"),
          (3, "预审", "2014-02-12"),
          (3, "预审", "2014-02-13"),
          (3, "高潜", "2014-02-14"),
          (3, "高潜", "2014-02-15")
      ])
      
      # 使用pandas.DataFrame.from_pandas将DataFrame转换为Pandas DataFrame
      data = df.toPandas()
      
      # 确保产品名列已排序
      data.sort_values(by='产品名', inplace=True)
      
      # 计算每个产品名的最大日期
      max_dates = data.groupby('产品名')['日期'].transform('max')
      
      # 添加最大日期列
      data['最大日期'] = max_dates
      
      # 根据手机号筛选出符合条件的记录
      filtered_data = data[data['手机号'] == 1]
      
      # 获取每个手机号码的最高日期
      highest_date_per_phone = filtered_data[['产品名', '最大日期']].drop_duplicates().sort_values(by='最大日期', ascending=False).head(1)
      
      print(highest_date_per_phone)
      

      这段Python代码首先加载数据到Pandas DataFrame,然后按照产品名对数据进行排序,并计算每个产品的最大日期。接着,通过groupby操作找到每个产品的最高日期,并添加到DataFrame中。最后,根据手机号筛选出满足条件的记录,并获取每个手机号码的最高日期。

      展开全部

      评论 编辑记录
      编辑
      预览

      报告相同问题?

    • 相关阅读:
      【01方程组的几何解释】
      鉴源论坛 · 观辙丨汽车CAN总线渗透测试
      【多线程】进程与线程
      无人机还能“独立思考”,他们做到了...
      FFMPEG常用的一些命令介绍:音频录制、视频录制
      vue 实现下载pdf格式的文件
      idea plugin demo
      C++ | Leetcode C++题解之第91题解码方法
      求求你别在用SpringMVC了,太Low了,Spring又官宣了一个更牛逼的替代框架
      信息学奥赛一本通:1139:整理药名
    • 原文地址:https://ask.csdn.net/questions/8135952