查询出每一种食物的最高/低价,以及最高/低价发生在哪一天

这是一个关于SQL查询的问题,目标是从数据表中检索每种食物的最低和最高价格,以及这些价格对应的日期。提供的SQL查询示例展示了如何通过子查询来实现这一目标,首先对食物分组,然后找出每组内的最低和最高价格,并分别连接到其最低价和最高价的日期。
摘要由CSDN通过智能技术生成

目录

数据结构

 要求:查询出每一种食物的最高/低价,以及最高/低价发生在哪一天 

SQL 

开始查询

执行结果


数据结构

 要求:查询出每一种食物的最高/低价,以及最高/低价发生在哪一天 

SQL 

/*
 Navicat Premium Data Transfer

 Source Server         : 2021
 Source Server Type    : MySQL
 Source Server Version : 50726
 Source Host           : localhost:3306
 Source Schema         : db01

 Target Server Type    : MySQL
 Target Server Version : 50726
 File Encoding         : 65001

 Date: 23/10/2022 23:52:25
*/

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for table
-- ----------------------------
DROP TABLE IF EXISTS `table`;
CREATE TABLE `table`  (
  `id` int(11) NOT NULL,
  `food` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `price` decimal(10, 2) NULL DEFAULT NULL,
  `date` datetime(0) NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = MyISAM CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of table
-- ----------------------------
INSERT INTO `table` VALUES (111, 'chicken', 20.00, '2022-10-19 15:04:23');
INSERT INTO `table` VALUES (112, 'chicken', 50.00, '2022-10-20 15:04:39');
INSERT INTO `table` VALUES (113, 'beef', 50.00, '2022-10-14 15:04:55');
INSERT INTO `table` VALUES (114, 'pork', 30.00, '2022-10-15 16:20:19');
INSERT INTO `table` VALUES (115, 'beef', 20.00, '2022-10-01 16:21:01');
INSERT INTO `table` VALUES (116, 'pork', 36.00, '2022-10-03 16:21:17');
INSERT INTO `table` VALUES (117, 'chicken', 25.00, '2022-10-11 23:48:34');
INSERT INTO `table` VALUES (118, 'beef', 28.00, '2022-09-23 23:48:56');
INSERT INTO `table` VALUES (119, 'pork', 54.00, '2022-09-08 23:49:22');

SET FOREIGN_KEY_CHECKS = 1;

开始查询

SELECT 
t1.food as '肉类',
min(t1.price) as '最低价格',
(
SELECT 
	min(date) 
	FROM `table` as t2 
	WHERE t2.price = min(t1.price) and t2.food = t1.food
) as '最低价格对应日期',

MAX(t1.price) as '最高价格',
(
SELECT 
	MAX(date) 
	FROM `table` as t2 
	WHERE t2.price = MAX(t1.price) and t2.food=t1.food
) as '最高价格对应的日期'

FROM `table`  AS t1

GROUP BY food

执行结果

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Roam-G

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值