[英]SQL grouping
我有一個包含以下列的表格:
A B C --------- 1 10 X 1 11 X 2 15 X 3 20 Y 4 15 Y 4 20 Y
我想基於B和C列對數據進行分組,並計算A列的不同值。 但是,如果有兩個或兩個以上的行,其中A列的值相同,我想從B列獲取最大值。
如果按結果進行簡單分組,結果將是:
B C Count -------------- 10 X 1 11 X 1 15 X 1 20 Y 2 15 Y 1
我想要的是這個結果:
B C Count -------------- 11 X 1 15 X 1 20 Y 2
是否有任何查詢可以返回此結果。 服務器是SQL Server 2005。
我喜歡分步驟工作:首先清除重復的A記錄,然后進行分組。 不是最有效的方法,但是它適用於您的示例。
with t1 as (
select A, max(B) as B, C
from YourTable
group by A, C
)
select count(A) as CountA, B, C
from t1
group by B, C
我實際上已經測試過:
SELECT
MAX( B ) AS B,
C,
Count
FROM
(
SELECT
B, C, COUNT(DISTINCT A) AS Count
FROM
t
GROUP BY
B, C
) X
GROUP BY C, Count
它給了我:
B C Count
---- ---- --------
15 X 1
15 y 1
20 y 2
看一下這個。 盡管我尚未對其進行測試,但這應該可以在Oracle中使用。
select count(a), BB, CC from
(
select a, max(B) BB, Max(C) CC
from yourtable
group by a
)
group by BB,CC
WITH cteA AS
(
SELECT
A, C,
MAX(B) OVER(PARTITION BY A, C) [Max]
FROM T1
)
SELECT
[Max] AS B, C,
COUNT(DISTINCT A) AS [Count]
FROM cteA
GROUP BY C, [Max];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.