假设我有一张桌子" main":
CAT YEAR
1 2010
1 2015
2 2012
2 2010
我成功通过以下类别提取了最大年份:
SELECT CAT, MAX(YEAR) FROM main GROUP BY CAT
我想得到最大年份值的最小值,即2012年(第三行)。
类似的东西:
SELECT MIN(SELECT MAX(YEAR) FROM main GROUP BY CAT)
有人可以帮助我吗?
答案 0 :(得分:4)
将查询用作子查询,您可以从子查询中选择提取年份的最小值,如下所示:
select min(year) from -- Select the minimum year from
(
SELECT CAT, MAX(YEAR) as year FROM main GROUP BY CAT
) -- Your query as subquery
答案 1 :(得分:2)
SELECT MIN(yr)
FROM (SELECT CAT, MAX(YEAR) as yr FROM main GROUP BY CAT)
这是使用subquery完成的。
子查询是嵌套在SELECT,INSERT,UPDATE或DELETE语句内或另一个子查询内的查询。子查询可以在允许表达式的任何地方使用。
答案 2 :(得分:2)
一种方法使用子查询。我更喜欢退回一行:
select cat, max(year)
from main
group by cat
order by max(year) desc
fetch first 1 row only;
这样,您就可以在一次查询中获得cat
和year
。
注意:并非所有数据库都支持ANSI标准fetch first 1 row only
。有些人使用limit
,top
甚至其他方法。
答案 3 :(得分:1)
您可以尝试在SELECT中使用SELECT。这是解决这类问题的好方法。
SELECT min(yr)
FROM (SELECT cat, max(YEAR) as yr
FROM main
GROUP BY cat)
答案 4 :(得分:0)
您已经在那里,可以从刚创建的表中选择最小值(在combined = pd.concat([df1, df2], axis=1)
combined.sort_index(axis=1, inplace=True)
combined
Out[13]:
bar foo \
D E F G H A B
0 0.915879 0.712345 0.460795 0.529782 0.161578 0.803505 0.133896
1 0.234319 0.317113 0.477687 0.525108 0.495104 0.107596 0.374732
2 0.149397 0.244950 0.866735 0.501562 0.758321 0.508689 0.635703
3 0.330018 0.204695 0.598899 0.522993 0.306496 0.936768 0.638874
C
0 0.614592
1 0.824297
2 0.482161
3 0.792035
部分中使用它):
FROM
答案 5 :(得分:0)
SELECT MAX(YEAR) FROM main GROUP BY CAT ORDER BY 1 LIMIT 1;