首页 > 其他分享 >1164. 指定日期的产品价格

1164. 指定日期的产品价格

时间:2023-05-25 09:22:52浏览次数:38  
标签:1164 product 08 price 日期 2019 date 产品价格 id

【题目】

产品数据表: Products

+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| product_id    | int     |
| new_price     | int     |
| change_date   | date    |
+---------------+---------+
这张表的主键是 (product_id, change_date)。
这张表的每一行分别记录了 某产品 在某个日期 更改后 的新价格。

 

写一段 SQL来查找在 2019-08-16 时全部产品的价格,假设所有产品在修改前的价格都是 10 。

以 任意顺序 返回结果表。

查询结果格式如下例所示。

 

示例 1:

输入:
Products 表:
+------------+-----------+-------------+
| product_id | new_price | change_date |
+------------+-----------+-------------+
| 1          | 20        | 2019-08-14  |
| 2          | 50        | 2019-08-14  |
| 1          | 30        | 2019-08-15  |
| 1          | 35        | 2019-08-16  |
| 2          | 65        | 2019-08-17  |
| 3          | 20        | 2019-08-18  |
+------------+-----------+-------------+
输出:
+------------+-------+
| product_id | price |
+------------+-------+
| 2          | 50    |
| 1          | 35    |
| 3          | 10    |
+------------+-------+

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/product-price-at-a-given-date
【思路】

找日期后修改的,赋值为10,日期前修改的找max日期即可。

【代码】

SELECT product_id,10 AS price
FROM Products
GROUP BY product_id
HAVING MIN(change_date)>'2019-08-16'
UNION
SELECT product_id, new_price AS price 
FROM Products
WHERE (product_id, change_date) IN
(SELECT product_id,MAX(change_date)
    FROM Products
    WHERE change_date<='2019-08-16'
    GROUP BY product_id
)

 

标签:1164,product,08,price,日期,2019,date,产品价格,id
From: https://www.cnblogs.com/End1ess/p/17430176.html

相关文章

  • php中日期时间字符串可以直接比较大小
    php中的日期时间字符串可以直接比较大小很多朋友还不知道,一直使用strtotime转换字符串为时间戳再比较大小。$time1='09:00';$time2='12:51';$time3='22:00';self::assertTrue($time2>$time1);self::assertTrue($time2<$time3);$date1='2021-02-03';$......
  • 不同数据库的格式化日期函数
    不同数据库的格式化日期MySql1、获取当前时间selectnow()2、日期格式化#年-月-日时:分:秒SELECTDATE_FORMAT(now(),'%Y-%m-%d%H:%i:%s')具体格式参考下面:格式描述%a缩写星期名(Sun..Sat)%b缩写月名(Jan..Dec)%c月,数值(0..12)%D带有英文......
  • Js获取当前是本年度第几周、周开始日期结束日期
    js获取今年第几周和获取周的开始和结束日期获取今年第几周周的开始和结束日期 获取今年第几周//页面初始时获取当前是本年第几周functiongetYearWeek(a,b,c){//a为年b为月c为日/*date1是当前日期date2是当年第一天......
  • 获取下一个月日期
    publicstaticfinalStringgetNextMonth(StringqueryMonth)throwsParseException{SimpleDateFormatformat=newSimpleDateFormat("yyyy-MM");Calendarcalendar=Calendar.getInstance();//设置为当前时间DateFormatdateFormat=newSimpleDa......
  • java基于joda-date实现获取两个时间段对应类型的所有时间,比如说两年之间的所有日期,两
    /***获取两个时间段对应类型的所有时间**@paramtype日期类型,包含day、month、year*@parambeginTime开始时间*@paramendTime结束时间*@return*/publicstaticList<String>getBetweenTime(Stringtype,String......
  • C语言 加入16进制格式 编译日期 编译时间
      要在C语言中打印16进制格式的编译日期和时间,可以这样实现:#include<stdio.h>intmain(){printf("Thisprogramwascompiledon0x%xat0x%x.\n",__DATE__,__TIME__);return0;} __DATE__和__TIME__都是以十进制格式定义的,我们在打印时使用0x%......
  • 日期
    日期这道题比较水,但还是十分值得深思的,有点像数学里的分类讨论问题。日期为\(31\)月份为\(1,3,5,7,8,10,12\)无需修改。月份为\(2,4,6,9,11\)改\(1\)次(都改成\(1\)月)。除掉以上合法的月份,当个位为\(4,6,9\)时,修改十位不能达到目的。其他情况均可以\(1......
  • 【Element-UI】时间/日期选择器选择禁用当前之前(之后)时间
    01.日期选择<template><div><el-date-pickerformat="yyyy-MM-dd"value-format="yyyy-MM-dd"type="date"placeholder="请选择日期"v-model="dayDate":pic......
  • 学习笔记-Java8新特性-第七节-新时间与日期API
    新时间与日期API本地时间类LocalDateLocalTImeLocalDateTime简介人读的时间提供以ISO-8601为标准的日期和时间提供简单的日期或时间并不包含当前的时间信息也不包含与时区相关的信息示例publicvoidtest1(){LocalDateTimelocalD......
  • 定义日期类Date
    定义一个日期类Date,main()函数完成对其的测试。Date类结构说明: Date类的数据成员包括:①私有数据成员:年year(int型),月month(int型),日day(int型)。Date类成员函数包括:①定义有参构造函数Date(int,int,int)和拷贝构造函数Date(Date&),其中有参构造函数参数默认值为1,输出信......