SQL查询以显示表中具有最小值、最大值和平均值的所有列
请你帮我查询下表好吗SQL查询以显示表中具有最小值、最大值和平均值的所有列,sql,sql-server,sql-server-2012,Sql,Sql Server,Sql Server 2012,请你帮我查询下表好吗 A B C D ----------------- 1 5 7 -5 2 6 8 7 我需要垂直列出的所有列的最小值、最大值和平均值。输出应如下所示。十、 X,X只是样本字母,而不是实际的最小值、最大值和平均值 CN Min Max AVG ---------------------- A X X X B X X X C X X X D X X X CN=列名
A B C D
-----------------
1 5 7 -5
2 6 8 7
我需要垂直列出的所有列的最小值、最大值和平均值。输出应如下所示。十、 X,X只是样本字母,而不是实际的最小值、最大值和平均值
CN Min Max AVG
----------------------
A X X X
B X X X
C X X X
D X X X
CN=列名
有人能给我这个问题的答案吗?大概是这样的:
;WITH CTE
(
SELECT 'A' as CN, tbl.a as nbr FROM tbl UNION ALL
SELECT 'B', tbl.b FROM tbl UNION ALL
SELECT 'C', tbl.c FROM tbl UNION ALL
SELECT 'D', tbl.d FROM tbl
)
SELECT
CTE.CN,
MAX(CTE.nbr) AS Max,
MIN(CTE.nbr) AS Min,
AVG(CTE.nbr) AS Avg
FROM
CTE
GROUP BY
CTE.CN
或带有:
请尝试:
SELECT DISTINCT
CN,
MIN(Col) over (partition by CN) [Min],
MAX(Col) over (partition by CN) [Max],
AVG(Col) over (partition by CN) [Avg]
FROM
(SELECT *
FROM YourTable) p
UNPIVOT
(Col FOR CN IN
(A, B, C, D)
)AS unpvt;
显示您的尝试或查询以解决此问题。我对sql查询不熟悉,只是尝试使用sql中的max、min、avg函数,但我期望的输出样式与上述问题的输出不同。我很高兴他们在学校教MS sql。哪所学校?在你的问题中包括你的疑问,这样人们可以帮助你只需添加,我有这样的数据“-1E+30”,它没有给出准确的值。如何避免在没有这些类型的值的情况下计算值?
SELECT DISTINCT
CN,
MIN(Col) over (partition by CN) [Min],
MAX(Col) over (partition by CN) [Max],
AVG(Col) over (partition by CN) [Avg]
FROM
(SELECT *
FROM YourTable) p
UNPIVOT
(Col FOR CN IN
(A, B, C, D)
)AS unpvt;