gpt4 book ai didi

sqlite - 在几列上使用MAX()获得整行

转载 作者:行者123 更新时间:2023-12-03 18:39:03 25 4
gpt4 key购买 nike

首先:感谢您的关注;感谢您的时间!

到这一点:

SCHEMA:用于myTable

nonUniqueID    YEAR    MONTH    DAY    HOUR    numericValue
1 2012 01 01 01 99.9
1 2012 01 01 02 65.2
1 2012 01 01 03 -88
7 2012 02 08 21 9.08
1 2012 01 01 09 99.913
1 2013 01 01 01 99.999999


基本上,这是两个具有精确日期的值 nonUniqueIDnumericValue

现在,我需要在整个数据库中获得最大的约会。使用上面的数据,预期结果将是:

nonUniqueID    YEAR    MONTH    DAY    HOUR    numericValue
1 2013 01 01 01 99.999999


因为这是SQLite,所以我知道最终将不得不多次使用MAX()。订单必须是MAX(YEAR),MAX(MONTH),MAX(DAY),MAX(HOUR)。

基本上,查询将像这样工作(我只是对SQL语法了解不足以创建查询):


查找年份最高的所有记录
从此组中,找到所有具有最高MONTH记录的记录
从该组中,找到DAY最高的所有记录
从此集合中,找到具有HOUR最高的所有记录
返回此记录


这是我从另一个无效的StackExchange问​​题改编而成的SQL

Select * From ( 
Select max(YEAR) as Y FROM myTable

union

Select max(MONTH) as M FROM myTable

union

Select max(DAY) as D FROM myTable

union

Select max(HOUR) as H FROM myTable
) myTable;


哪个返回

Y
-----
21
08
02
2013


将此与预期结果进行比较:

nonUniqueID    YEAR    MONTH    DAY    HOUR    numericValue
1 2013 01 01 01 99.999999


它返回了4条记录,而不是包含4个值的一条记录。

有人可以帮我查询一下吗?谢谢!

最佳答案

试试这个

 SELECT nonUniqueID ,  YEAR ,  MONTH ,  DAY ,  HOUR ,  numericValue FROM myTable as a
INNER JOIN (Select max(MONTH) FROM myTable) as b
ON a.YEAR = B.YEAR
INNER JOIN (Select max(DAY) FROM myTable) as c
ON b.YEAR = c.YEAR
INNER JOIN (Select max(HOUR) FROM myTable) as d
ON c.YEAR = d.YEAR
WHERE a.YEAR = (Select max(YEAR) FROM myTable)


它返回4个值,因为您使用了 UNION
这意味着结果被合并到一列中

编辑

香港专业教育学院刚刚更新了我的答案,看看是否可行,我不太确定此查询的性能

关于sqlite - 在几列上使用MAX()获得整行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11911369/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com