Sql 从同一列中选择多个最大值
我有一个用户数据库,根据用户的类型在一定范围内为用户分配一个ID号。例如,董事会成员的ID介于1和100之间,孩子的ID介于1001和3000之间,家长的ID介于3001和7000之间,等等* 我想为我的ID的每个“段”获得一个最高使用数的列表 当然,我可以通过这样做获得最高的数量Sql 从同一列中选择多个最大值,sql,aggregate-functions,Sql,Aggregate Functions,我有一个用户数据库,根据用户的类型在一定范围内为用户分配一个ID号。例如,董事会成员的ID介于1和100之间,孩子的ID介于1001和3000之间,家长的ID介于3001和7000之间,等等* 我想为我的ID的每个“段”获得一个最高使用数的列表 当然,我可以通过这样做获得最高的数量 SELECT MAX(Persons.Number) as Maximum FROM Persons 并获得3000以下的最大值,如下所示: SELECT MAX(Persons.Number) as MaxChi
SELECT MAX(Persons.Number) as Maximum FROM Persons
并获得3000以下的最大值,如下所示:
SELECT MAX(Persons.Number) as MaxChild FROM Persons WHERE Persons.Number<=3000
从Persons.Number所在的Persons中选择MAX(Persons.Number)作为MaxChild只需使用IF()
:
上面是MySQL语法。在SQL Server中,您可以使用IIF()
。在每个RDBMS(因为它是ANSI-SQL标准)中应该工作的是
好极了如果
对我不起作用,在你编辑答案时,谷歌帮我找到了IIF
(实际上是mssql)。
SELECT
MAX(IF(Persons.Number BETWEEN x AND y, Persons.Number, NULL)) AS max_range_x_y,
MAX(IF(Persons.Number BETWEEN i AND j, Persons.Number, NULL)) AS max_range_i_j, ...
FROM Persons;
SELECT
MAX(CASE WHEN Persons.Number BETWEEN x AND y THEN Persons.Number ELSE NULL END) AS max_range_x_y,
MAX(CASE WHEN Persons.Number BETWEEN i AND j THEN Persons.Number ELSE NULL END) AS max_range_i_j, ...
FROM Persons;
SELECT
MAX(CASE WHEN id BETWEEN 1 and 100 THEN Number ELSE NULL END) as BoardMax,
MAX(CASE WHEN ID BETWEEN 1001 and 3000 THEN Number ELSE null END) as ChildMax,
MAX(CASE WHEN ID BETWEEN 3001 and 7000 THEN Number ELSE null END) as ParentMax
from
Persons