我想从一列显示名称中每个字母的百分比。
例如A = 20%,B = 30%,Z = 10%等。
名称:
Apple
Ace
Benedict
Been
Broom
Car
Make
Safe
Thanksgiving
Zappers
我想从一列显示名称中每个字母的百分比。
例如A = 20%,B = 30%,Z = 10%等。
名称:
Apple
Ace
Benedict
Been
Broom
Car
Make
Safe
Thanksgiving
Zappers
您需要LEFT()
和COUNT()
和GROUP BY
才能获得预期的结果:
请找到示例执行:
CREATE TABLE TestTable (String VARCHAR (100));
INSERT INTO TestTable (String) VALUES
('Apple'),('Ace'),('Benedict'),('Been'),('Broom'),('Car'),('Make'),('Safe'),('Thanksgiving'),('Zappers');
DECLARE @TCount AS INT = 0;
SELECT @TCount = COUNT(*) FROM TestTable;
SELECT LEFT(String,1) AS FChar,CONCAT(COUNT(LEFT(String,1)) *100 / @TCount,'%') AS CharPercent
FROM TestTable
GROUP BY LEFT(String,1)
ORDER BY LEFT(String,1)
,
您可以使用窗口功能。正确的逻辑是:
SELECT LEFT(name,1) AS first_char,COUNT(*) * 100.0 / SUM(COUNT(*)) OVER() AS pct
FROM t
GROUP BY LEFT(name,1)
ORDER BY first_char;