SQL:如何计算列中特定值的出现次数

艾伦

我想知道是否有人可以帮助我弄清楚如何从 SQL 表的特定列中计算特定字符串的所有唯一出现次数?

使用这个:

index    gender
1        0::Male
2        0::Male
3        0::Male||1::Male
4        0::Male||1::Female
5        0::Male||1::Male||2::Female

要得到这个:

gender    count
Males     7
Females   2

这是我尝试过的,但它无法解释同一单元格中的多次出现:

SELECT
    SUM (CASE WHEN genders LIKE '%Male%' THEN '1' END) AS Males,
    SUM (CASE WHEN genders LIKE '%Female%' THEN '1' END) AS Females
FROM genders
伊扎克·哈宾斯基

请尝试以下解决方案。

它将从 SQL Server 2016 开始工作。

SQL

-- DDL and sample data population, start
DECLARE @tbl TABLE (ID INT IDENTITY PRIMARY Key, gender VARCHAR(MAX));
INSERT INTO @tbl (gender) VALUES
('0::Male'),
('0::Male'),
('0::Male||1::Male'),
('0::Male||1::Female'),
('0::Male||1::Male||2::Female');
-- DDL and sample data population, end

-- Method #1
;WITH rs AS
(
    SELECT STUFF(value, 1, pos + 1, '') AS gender
    FROM @tbl
        CROSS APPLY STRING_SPLIT(REPLACE(gender,'||','|'), '|')
        CROSS APPLY (SELECT CHARINDEX('::', value)) AS t(pos)
)
SELECT gender, COUNT(*) AS [Counter]
FROM rs
GROUP BY gender;

-- Method #2
SELECT 'Male' AS Gender
    , SUM(IIF(value LIKE '%:Male%', 1, 0)) AS [Counter]
FROM @tbl
    CROSS APPLY STRING_SPLIT(gender,'|')
UNION ALL
SELECT 'Female' AS Gender
    , SUM(IIF(value LIKE '%:Female%', 1, 0)) AS [Counter]
FROM @tbl
    CROSS APPLY STRING_SPLIT(gender,'|')
ORDER BY Gender;

输出

+--------+---------+
| gender | Counter |
+--------+---------+
| Female |       2 |
| Male   |       7 |
+--------+---------+

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

SQL:如何计算列中特定值的出现次数

如何在不执行两次SQL调用的情况下计算SQL列中特定值出现的次数

如何计算组中特定值的出现次数?

如何计算python中特定JSON值的出现次数?

如何计算数据框列中特定值的出现次数

SQL - 计算列中不同值的出现次数

Power BI - 如何计算列中某个值的出现次数?

如何计算 BigQuery 中每个 ID 列值的出现次数

如何计算SQL中多列中的出现次数

SQL - 计算列中的出现次数

如何计算SQL中的出现次数

如何编号 SQL 中列值的出现次数?

计算特定值相对于另一列中的值出现的次数

SQL - 计算一个列值在另一列值中的出现次数

SQL:创建计算其他列值出现次数的列

计算每个值出现在具有附加条件的特定列中的次数

计算具有特定值的元素在不同列中的出现次数

R:计算每列中的出现次数,并用计数替换该列的值(SQL?)

如何计算SQL中计算列的出现次数?

如何计算 SQL Server 中每列中特定值出现的百分比

XQuery / XPath:如何计算特定值在不同元素中的出现次数?

如何计算在数据框python中的特定值之前出现的次数?

如何计算特定单词在列中出现的次数?

如何计算 PostgreSQL 中两个不同列中单个值的 DISTINCT 出现次数?

计算python中特定列的数字出现次数

使用awk计算文件在特定列中的出现次数

计算列中特定项目的出现次数

计算SQL Server中不同值的出现次数

计算列中每个值的所有出现次数