MYSQL練題筆記-高級查詢和連接-指定日期的產品價格

這依舊是中等題,想了好久,終于理解了很開心!

一、題目相關內容

1)相關的表和題目

2)幫助理解題目的示例,提供返回結果的格式

二、自己初步的理解

題目是找出2019-08-16 時全部產品的價格,所以重點是獲取想要的時間的產品價格。

提供的表記錄了某產品在某個日期更改后的新價格。

那就是改了價格的就有記錄;沒改就輸出,那這里先思考沒改的話,price就等于10,但是可能是核心點沒有思考全目前也沒有具體的想法,先想簡單的點好像也不行。

1)那改價格有不同時間改的,16之前以及16這一天改的要及時輸出,這一天之后修改對于本題來說話沒有意義,重點是有可能改了不止一次。所以要取最大的日期但是不大于16號修改的記錄。

2)因為這里同一個的產品可能改了多次,那就需要根據product_id進行分組。然后獲取分組里不大于16號的最大的日期的價格。

3)然后這里需要聯系上沒有修改價格的product_id,但是我發現這個題目里沒有所有的產品的id,只有可能是在16號之后修改的產品的價格就是'10'。

然后下面這是我的解答

select p1.product_id,ifnull(p1.new_price,'10') as price from products p1 left join(select product_id,new_price from products group by product_id having max(change_date)<='2019-08-16') change_price on p1.product_id=change_price.product_id;

其實我都自信滿滿的啦,但是給我顯示錯誤,就是下圖的錯誤,所以我屈服去看題解了,不過這次有進步不斷地思考自己的邏輯,沒有和之前一樣,自己邏輯都沒有理清的時候就去看題解,搞得最后一知半解。

三、題解展示和分析

正確的題解如下。

select p1.product_id,ifnull(p2.new_price,10) as price from (select distinct product_id from products) p1 left join(select product_id,new_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))p2 on p1.product_id=p2.product_id;

我和大佬的區別在上面兩段紅色的代碼部分,這說明我總體的邏輯是對的,有兩個點,一獲取全部產品的id的方式不對,沒有想到提取的是不重復的id。二是我直接的子查詢和where in的區別,我是想著分組后,每個組里的修改日期最大值<=16號,但其實可以從我上面錯誤的答案明顯的看出來我是沒有過濾成功的,但是我一直想不通啊,這里做一個嘗試,因為我有兩個錯誤,那我把第一個錯誤改一下正確題解的,但是這一個錯誤先不改,就改成了下面的題解

select p1.product_id,ifnull(p2.new_price,10) as price from (select distinct product_id from products) p1 left join(select product_id,new_price from products group by product_id having max(change_date)<='2019-08-16')p2 on p1.product_id=p2.product_id;

輸出還是不對,如下

這明顯第二個錯誤是有問題的,沒有找到最大的日期,但是確實確實不知道原因!!!!!!!!!

但我知道為什么正確答案正確,啊啊啊!!!

select product_id,new_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

1)小部分正確答案的分析邏輯

正確答案這部分是在找id和新價格

什么樣的id和新價格呢

首先新價格的日期都要小于或者等于16(啊啊啊,這不直接就省掉了很多的記錄嗎,我一直想著分組后篩選,又沒篩對,我還不理解,難啊難!!)

然后找分組過后的里面的最大的日期,注意啊這是篩選后最后找最大的日期,不像之前是全部的日期找最大的(這邏輯不就一下子出來了嗎,那我的邏輯是什么)

?2)我的小部分答案分析邏輯

我的答案也是在找id和新價格

什么樣的id和新價格呢

分組后,新價格的日期的最大值都要小于或者等于16的記錄

?3)總結上述對比

我知道了!!!!!因為新價格的日期最大值可能大于16,但小一點的小于16。也說明了為啥我的第二條記錄為啥錯誤,他不滿足條件就輸出10。

而且從上面的輸出可以看出來,我的第一個答案也是錯了的,這是為什么呢?我自己的猜測是三條記錄都滿足條件,那就選擇第一個輸出!!

所以啊,要把邏輯盤順啊,你就非常好理解了!

四、總結

仔細想仔細想自己的邏輯,切記啊,你不了解自己那你別指望了解正確的題解,正確的答案都在那了,別放著不拿哈,當然前提是你明確自己的邏輯你才是走上了那答案的第一步,加油加油,寫完了這難纏的一題了!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/212483.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/212483.shtml
英文地址,請注明出處:http://en.pswp.cn/news/212483.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

數字化時代的到來,IT運維產業正在發生深刻的變革

IT運維產業是隨著信息技術的發展而產生的&#xff0c;它涵蓋了從硬件到軟件、從應用到數據、從終端到云端等各個方面的維護和管理。隨著數字化時代的到來&#xff0c;IT運維產業正在發生深刻的變革。其中&#xff0c;大數據技術的廣泛應用和數據資源的日益豐富&#xff0c;正在…

使用最小花費爬樓梯

1.狀態表示 2.狀態轉移方程 3.初始化 保證填表時&#xff0c; 不越界 4.填表順序 從左往右 5.返回值 解法2&#xff1a; 1.狀態表示 2.狀態轉移方程 3.初始化 4.填表 從右往左 5.返回值 min( dp[0] , dp[1] ) ----------------------------------------------------…

java+springboot+ssm學生社團管理系統76c2e

本系統包括前臺和后臺兩個部分。前臺主要是展示社團列表、社團風采、社團活動、新聞列表等&#xff0c;前臺登錄后進入個人中心&#xff0c;在個人中心能申請加入社團、查看參加的社團活動等&#xff1b;后臺為管理員與社團負責人使用&#xff0c;應用于對社團的管理及內容發布…

Vue3源碼梳理:源碼目錄結構及源碼閱讀方法

VUE3 源碼目錄結構 1 ) 下載源碼三種方式 方式1&#xff0c;Download ZIP&#xff0c;不推薦方式2&#xff0c;通過https,或ssh或github cli來克隆項目 $ git clone https://github.com/vuejs/core.git$ git clone gitgithub.com:vuejs/core.git 方式3&#xff0c;點擊Fork, …

常見統計學習方法特點總結

1. 概述 方法適用問題模型特點模型類型學習策略損失函數學習算法1感知機二分類分離超平面判別模型極小化誤分點到超平面距離誤分點到超平面距離SGD2KNN多分類&#xff0c;回歸特征空間&#xff0c;樣本點判別模型---3樸素貝葉斯多分類特征與類別的聯合概率分布&#xff0c;條件…

【CMU 15-445】Proj2 Hash Index

EXTENDIBLE HASH INDEX 通關記錄Task1 Read/Write Page Guards移動構造函數Drop方法移動賦值運算符析構函數UpgradeRead函數FetchPageBasic、FetchPageRead、FetchPageWrite、NewPageGuarded Task2 Extendible Hash Table PagesHeaderPageDirectoryPageBucketPage Task3 Extend…

飛天使-linux操作的一些技巧與知識點5

文章目錄 roles批量替換文件 role 的依賴關系role 的實際案例 roles tasks 和 handlers &#xff0c;那怎樣組織 playbook 才是最好的方式呢&#xff1f;簡 單的回答就是&#xff1a;使用 Roles Roles 基于一個已知的文件結構&#xff0c;去自動的加載 vars&#xff0c;tasks 以…

Python字典去重竟然比集合去重快速40多倍

這里寫目錄標題 對比代碼結果圖代碼解析 對比代碼 from glob import glob from tqdm import tqdm import time path_listglob("E:/sky_150b/任務組_20231207_2023/*.jsonl") # for two in tqdm(path_list): onepath_list[0]with open(one,"r",encoding&q…

【C++】POCO學習總結(十):Poco::Util::Application(應用程序框架)

【C】郭老二博文之&#xff1a;C目錄 1、Poco::Util::Application 應用框架 1.1 應用程序基本功能 Poco::Util::Application是POCO實現的的應用程序框架&#xff0c;支持功能如下&#xff1a; 命令行參數處理配置文件初始化和關機日志 1.2 命令行程序和守護進程 POCO支持…

Java架構師系統架構實現高內聚低耦合

目錄 1 導語2 邊界內聚耦合概述3 聚焦內聚4 關注耦合5 如何實現高內聚低耦合6 內聚耦合規劃不當的效果7 總結想學習架構師構建流程請跳轉:Java架構師系統架構設計 1 導語 架構設計的核心維度,從系統的擴展性、高性能、高可用、高安全性和伸縮性五個維度進行了探討,并介紹了…

【Docker】進階之路:(一)容器技術發展史

【Docker】進階之路&#xff1a;&#xff08;一&#xff09;容器技術發展史 什么是容器為什么需要容器容器技術的發展歷程Docker容器是如何工作的 什么是容器 容器作為一種先進的虛擬化技術&#xff0c;已然成為了云原生時代軟件開發和運維的標準基礎設施。在了解容器技術之前…

抖音本地生活服務商申請入口在哪里?具體流程是怎樣的?

不論是抖音的本地生活業務&#xff0c;還是后來的支付寶、視頻號的本地生活業務&#xff0c;因為市場體量足夠龐大&#xff0c;市場前景廣闊&#xff0c;一直很受各大創業者的追捧。那么&#xff0c;如此火熱的本地生活項目&#xff0c;想要申請成為服務商&#xff0c;具體的申…

列表標簽的介紹與使用

列表的作用&#xff1a; 整齊、整潔、有序&#xff0c;它作為布局會更加自由和方便。 根據使用情景不同&#xff0c;列表可以分為三大類&#xff1a;無序列表、有序列表和自定義列表 無序列表 <ul> 標簽表示 HTML 頁面中項目的無序列表&#xff0c;一般會以項目符號呈…

深入了解linux下網卡防火墻selinux

深入了解linux下網卡防火墻selinux 在Linux系統中&#xff0c;網絡安全是非常重要的。為了保護系統免受惡意攻擊和未經授權的訪問&#xff0c;我們可以使用防火墻來限制網絡流量。而在Linux下&#xff0c;我們可以使用SELinux&#xff08;Security-Enhanced Linux&#xff09;…

Java調試技巧之垃圾回收機制解析

Java作為一種高級編程語言&#xff0c;以其跨平臺、面向對象、自動內存管理等特性而廣受開發者的喜愛。其中&#xff0c;自動內存管理是Java的一大亮點&#xff0c;通過垃圾回收機制實現對內存的自動分配和釋放&#xff0c;極大地簡化了開發者的工作。本文將深入探討Java的垃圾…

mysql數據庫文件丟失恢復---惜分飛

客戶服務器重啟,mysql相關數據文件丟失 通過底層工具進行分析,無法正確恢復數據庫名字,一個個單個ibd文件(而且很多本身是錯誤的) 對于這種情況,通過mysql block掃描恢復出來page文件 恢復出來客戶需要數據 這個客戶出現該故障的原因大概率是由于文件系統損壞導致.最終…

C語言進階之路-數據結構篇

目錄 一、學習目標 二、數據結構 1.基本概念 線性關系&#xff1a; 非線性關系&#xff1a; 存儲形式 2. 算法分析 2.1 時間復雜度 2.2 空間復雜度 2.3 時空復雜度互換 總結 一、學習目標 了解數據結構的基本概念了解算法的分析方法 二、數據結構 1.基本概念 數據結…

測試bug分析

項目場景&#xff1a; 提示&#xff1a;這里簡述項目相關背景&#xff1a; 例如&#xff1a;項目場景&#xff1a;示例:通過藍牙芯片(HC-05)與手機 APP 通信&#xff0c;每隔 5s 傳輸一批傳感器數據(不是很大) 問題描述 提示&#xff1a;這里描述項目中遇到的問題&#xff1…

Nacos源碼解讀11——客戶端怎么讀取最新的配置信息

項目啟動怎么讀取的配置信息 自動裝配 SpringBoot 自動裝配機制 加載 WEB/INF spring.factories 會將如下幾個Bean加載到ioc 容器中 BeanConditionalOnMissingBeanpublic NacosConfigProperties nacosConfigProperties() {return new NacosConfigProperties();}BeanCondition…

【算法Hot100系列】兩數之和

&#x1f49d;&#x1f49d;&#x1f49d;歡迎來到我的博客&#xff0c;很高興能夠在這里和您見面&#xff01;希望您在這里可以感受到一份輕松愉快的氛圍&#xff0c;不僅可以獲得有趣的內容和知識&#xff0c;也可以暢所欲言、分享您的想法和見解。 推薦:kwan 的首頁,持續學…