Sql 如何获得一列的组的降序列表,该列是该组另一列的总和?
我想了解如何根据一组列值中另一列值的总和对该组列值进行降序 根据样本数据:Sql 如何获得一列的组的降序列表,该列是该组另一列的总和?,sql,sql-server,tsql,Sql,Sql Server,Tsql,我想了解如何根据一组列值中另一列值的总和对该组列值进行降序 根据样本数据: mtype location mcount =========================== X TX 4 Z AL 10 C TX 15 M AL 3 Z TX 12 M CT 4 M TX
mtype location mcount
===========================
X TX 4
Z AL 10
C TX 15
M AL 3
Z TX 12
M CT 4
M TX 20
Z CT 40
首先,我想按状态确定SUMmcount
location SUM(mcount)
=======================
TX 51
CT 44
AL 13
然后基于这个总和,我希望先返回总和最高的状态行,然后依此类推
因此,上面的数据将像这样返回,首先返回所有TX行,然后返回CT,最后返回AL行
mtype location mcount
===========================
X TX 4
C TX 15
Z TX 12
M TX 20
M CT 4
Z CT 40
Z AL 10
M AL 3
行的顺序超出其计数的组和并不重要
我已经获得了总人数下降最多的州的名单:
SELECT [LOCATION]
FROM A_TABLE
GROUP BY [STATE]
ORDER BY SUM(MCOUNT) DESC
要得到最终的返回表,应该将其放入临时表中,并遍历[STATE]值?
差不多
For each [LOCATION] in temptable
SELECT * FROM temptable tt WHERE tt.LOCATION = [LOCATION]
Next
那么结果如何呢?建议的处理方法是什么?
谢谢您按以下顺序使用带窗口的金额:
以你的桌子为例
挑选*
从值'X','TX',4,
“Z”,“AL”,10,
"C","TX",15,,
“M”,“AL”,3,
‘Z’、‘TX’、12、,
“M”,“CT”,4,
“M”,“TX”,20,
'Z','CT',40Vmtype,location,mcount
挑选*
从你的桌子上
按位置描述分区上的按和计数排序,
mcount;
太好了,谢谢!您将如何从中选择前两个不同的位置?在本例中,返回属于TX和CT的6行。在我看来,这是一个单独的问题,@CarlosMendieta,然而,有很多答案证明了这一点。例如获得前2名的逻辑是相同的。