Sql 与另一列值对应的列的最小值
下面是我从数据库中提取的数据表Sql 与另一列值对应的列的最小值,sql,sql-server,Sql,Sql Server,下面是我从数据库中提取的数据表 type week amount a 201304 77 a 201304 77 a 201304 77 a 201304 77 a 201304 71 a 201304 71 a 201305 77 a 201305 77 a 201305 77 a 201305 77 a 201305 77
type week amount
a 201304 77
a 201304 77
a 201304 77
a 201304 77
a 201304 71
a 201304 71
a 201305 77
a 201305 77
a 201305 77
a 201305 77
a 201305 77
a 201305 77
我试图从amount
列中仅提取每周的最小值,因此该表应如下所示
type week amount
a 201304 71
a 201305 77
感谢您的帮助您可以使用min和in子句
select * from my_table
where (amount, week ) in (
select min(amount), week from my_table group by week
);
可以使用min和in子句
select * from my_table
where (amount, week ) in (
select min(amount), week from my_table group by week
);
试一试
这样做的目的是将行号分配给仅包含周和金额的分区。你可能每周有很多钱。这将对它们进行编号,然后对它们进行排序,以便最小的将位于顶部(第1行)。在where子句中只得到这一行。无论是哪种类型,每周都会产生最低量。试试看
这样做的目的是将行号分配给仅包含周和金额的分区。你可能每周有很多钱。这将对它们进行编号,然后对它们进行排序,以便最小的将位于顶部(第1行)。在where子句中只得到这一行。无论是哪种类型,这将每周产生最低金额。这一常规的
分组有什么问题
SELECT type, week, MIN(amount) amount
FROM table_name
GROUP BY type, week
编辑
如果你在同一周内有不同的类型,数量相同,你想做什么?如果您想知道哪种类型在一周内的最小值(金额):
SELECT DISTINCT t2.*
FROM
(SELECT week, MIN(amount) amount
FROM table_name
GROUP BY week) t1
JOIN table_name t2 ON t1.amount = t2. amount AND t1.week = t2.week
这个常规的分组方式有什么问题
SELECT type, week, MIN(amount) amount
FROM table_name
GROUP BY type, week
编辑
如果你在同一周内有不同的类型,数量相同,你想做什么?如果您想知道哪种类型在一周内的最小值(金额):
SELECT DISTINCT t2.*
FROM
(SELECT week, MIN(amount) amount
FROM table_name
GROUP BY week) t1
JOIN table_name t2 ON t1.amount = t2. amount AND t1.week = t2.week
除了问题之外,您还应该包括到目前为止的代码(努力回答您的问题)。还请包括一个特定的问题或错误,以及在问题本身中重现该问题所需的最短代码。请参阅:并阅读。除了问题之外,您还应该包括到目前为止的代码(努力回答您的问题)。还请包括一个特定的问题或错误,以及在问题本身中重现该问题所需的最短代码。请参阅:并阅读。您不能在where子句中使用rownumber,因为SQL在计算结果集时无法理解别名。此外,where子句中也不能使用窗口函数。但是,您可以从select中选择作为子select或公用表expression@Matt谢谢你的指导。我编辑了我的答案。如果仍然存在任何错误,请告诉我。您不能在where子句中使用rownumber,因为SQL在计算结果集时无法理解别名。此外,where子句中也不能使用窗口函数。但是,您可以从select中选择作为子select或公用表expression@Matt谢谢你的指导。我编辑了我的答案。如果还有什么不正确的地方,请告诉我。