【发布时间】:2013-03-16 16:21:16
【问题描述】:
我有许多表“App_build”、“Server_build”,其中有一列名为“buildid”,其中包含大量记录。即:
buildid
-----------
Application1_BLD_01
Application1_BLD_02
Application1_BLD_03
Application2_BLD_01
Application3_BLD_01
Application3_BLD_02
Application4_1_0_0_1 - old format to be disregarded
Application4_1_0_0_2
Application4_BLD_03
我想编写一个名为getmax(tablename) 的函数,即getmax('App_build')
这将返回一个仅列出最高值的记录集。即:
buildid
--------
Application1_BLD_03
Application2_BLD_01
Application3_BLD_02
Application4_BLD_03
我是 SQL 新手,所以不知道如何开始 - 我想我可以使用拆分命令,然后使用 MAX 函数,但我不知道从哪里开始。
任何帮助都会很棒。
【问题讨论】:
-
如果要忽略“旧格式”,它是如何确切地定义的?另外,应用程序名称“Application1”是如何定义的? PostgreSQL 的版本?
-
嗨 - 感谢您的帮助。 PostgreSQL 的版本是 9.2。
-
嗨 - 感谢您的帮助,所提供的答案大部分工作正常。 PostgreSQL 的版本是 9.2。事实证明,我错误地认为旧格式应该被忽略。 buildid 的格式因表而异。表 App_build 格式为 [Application Name]_BLD_[Major Vesrion]_[Minor Version]_[Bugfix]_[BuildNumber]_[Optional PatchNumber] 例如 MyApp_BLD_1_0_0_1 是第一个版本,另一个带有可选补丁号的示例是 MyApp_BLD_2_1_1_25_P01。我需要找到最高版本号。 Server_build 表如上所述。 @ErwinBrandstetter
-
不确定,现在的问题是什么。在任何情况下,请以适当的格式将必要的附加信息编辑到问题中。
标签: sql function postgresql greatest-n-per-group plpgsql