作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一张看起来像这样的表:
--------EXAMPLE---------------------------------------------------------
Cat1 Cat2 Value
a NULL 131
b e1 143
a e2 135
c NULL 136
a e1 132
a NULL 13
c e4 1
我想从上面的 Cat1 中的各种类型中选择具有最高值的行。所以,我的答案如下所示:
--------EXAMPLE---------------------------------------------------------
Cat1 Cat2 Value
b e1 143
a e2 135
c NULL 136
我正在使用 Microsoft SQL,我正在寻找高效的方法,因为我的表中有大约 4000 万行需要操作。
谢谢!!
最佳答案
您可以将 CTE
与 DENSE_RANK
一起使用:
WITH cte
AS (SELECT cat1,
cat2,
Value,
Rank = Dense_rank()
OVER (
partition BY cat1
ORDER BY Value DESC)
FROM dbo.tablename)
SELECT cat1,
cat2,
value
FROM cte
WHERE rank = 1
如果您只想要一条(任意)记录且有多个具有相同最高值的记录,请使用 Row_Number
而不是 Dense_Rank
。
关于sql - 在一步中选择具有最大变量的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14448028/
COW 不是奶牛,是 Copy-On-Write 的缩写,这是一种是复制但也不完全是复制的技术。 一般来说复制就是创建出完全相同的两份,两份是独立的: 但是,有的时候复制这件事没多大必要
我是一名优秀的程序员,十分优秀!