我有一个包含两个字段的表,其中一个字段表示";日期";输入为天/月/年;速率";
日期|利率
2005年1月24日| 1.9754
2005年1月26日| 1.3723
…
等等
所以,我喜欢找到"0"的最小值和最大值;速率";每年的每个月。我的查询只选择一行
选择DISTINCT DATE_FORMAT(日期,'%d-%m-%y')作为DATE,MIN(速率)作为r,MAX(速率)为mr FROM速率
这将获得每个月和年度的费率值
SELECT
YEAR(date) AS thisYear,
MONTH(date) AS thisMonth,
MIN(rate) AS minRate,
MAX(rate) AS maxRate
FROM rates
GROUP BY thisYear ASC, thisMonth ASC
如果你需要有出现最小值或最大值的单独日期,你需要在其中进行一些额外的分组,但以上内容应该足以回答你最初的问题。
要获得"速率";对于一年中的每个月,您可以按如下方式修改查询:
SELECT DATE_FORMAT(date, '%m-%Y') as Month_Year, MIN(rate) as Min_Rate, MAX(rate) as Max_Rate
FROM rates
GROUP BY DATE_FORMAT(date, '%m-%Y');
GROUP BY
子句根据日期字段的月份和年份对费率表中的行进行分组。MIN
和MAX
函数然后计算每个组的速率字段的最小值和最大值。DATE_FORMAT
函数用于将日期字段格式化为格式为%m-%Y
的字符串,其中%m
是月份(01-12),%Y
是年份(例如2005)。
此查询将为费率表中每个唯一的月份和年份返回一行结果集,以及该月份和年份的费率字段的最小值和最大值。