我在进行简单查询时遇到困难。
这是我的桌子:
DIA PALE POWER COST
8 7 82 335
8 7 85 335 <--
8 7 96 335 <--
8 8 120 345
9 7 110 324
这是我的目标:选择每个DIA和PALE具有最低成本的值。 但是当成本相同时,仅返回最低的功率。
DIA PALE POWER COST
8 7 82 335
8 8 120 345
9 7 110 324
我已经开始查询,但是我缺少执行FIRST(MIN(POWER))之类的部分
Select *
From Table1 T1
WHERE [cost] = (Select min([cost])
From Table1
Where dia = T1.dia AND pale = T1.pale)
任何帮助将不胜感激。
致谢
答案 0 :(得分:1)
您可以使用子查询按成本和功率的顺序对行进行排序(成本至上,这是最重要的),并仅选择每个dia / pale组中排名第一的行;
SELECT DIA PALE, POWER, COST
FROM (
SELECT *, RANK() OVER (PARTITION BY DIA, PALE ORDER BY COST, POWER) rank
FROM Table1
) q
WHERE rank=1
答案 1 :(得分:0)
这不是一个简单的分组吗
SELECT DIA, PALE, MIN(POWER), COST
FROM From Table1 T1
WHERE [cost] = (Select min([cost])
From Table1
Where dia = T1.dia AND pale = T1.pale)
GROUP BY DIA, PALE, COST