【问题标题】:Count after removal of a certain character in column - SQL删除列中的某个字符后计数 - SQL
【发布时间】:2020-06-14 19:42:04
【问题描述】:

我有一个包含以下数据的表(staffs_table);

name               profession
------------------------------
Corbin             Human Resources|Accountant
Cort               Programmer|Receptionist|Helpdesk

我想统计每个职业的人数,以便我的结果如下;

profession             number_of_staffs
---------------------------------------
Human Resources            1
Accountant                 1 
Programmer                 1
Receptionist               1
Helpdesk                   1

我尝试了以下 SQL 查询,但没有成功;

SELECT profession, COUNT(*) AS number_of_staffs FROM staffs_table GROUP BY profession ORDER BY COUNT(*) DESC;

输出:

profession                   number_of_staffs
---------------------------------------------
Human Resources|Accountant            1
Programmer|Receptionist|Helpdesk      1 

还尝试了以下方法;

SELECT staffs_table.name,
SUBSTRING_INDEX(SUBSTRING_INDEX(staffs_table.profession, '|', numbers.n), '|', -1) profession
FROM
  numbers INNER JOIN staffs_table
  ON CHAR_LENGTH(staffs_table.profession)
     -CHAR_LENGTH(REPLACE(staffs_table.profession, '|', ''))>=numbers.n-1

输出:

name               profession
------------------------------
Corbin             Human Resources
Corbin             Accountant
Cort               Programmer
Cort               Receptionist
Cort               Helpdesk

提前致谢!

【问题讨论】:

  • 这能回答你的问题吗? SQL split values to multiple rows
  • 指定你的 MySQL 版本。
  • 修复你的数据模型!不要在单个列中存储多个值!
  • @AnkitBajpai 感谢您的回复。它是不同的。您引用的问题,仅在删除 '|' 后显示结果` 没有计数。我的问题是对计数感兴趣。
  • 所以一旦你把它分成几行,你就可以触发一个 cont 函数来计算关键字。

标签: mysql sql group-by count substring


【解决方案1】:
SELECT jsontable.profession, COUNT(jsontable.profession) number_of_staffs
FROM staffs_table
CROSS JOIN JSON_TABLE( CONCAT('["', REPLACE(staffs_table.profession, '|', '","'), '"]'),
                       "$[*]" COLUMNS( profession VARCHAR(254) PATH "$" )
                     ) AS jsontable
GROUP BY jsontable.profession;

fiddle

【讨论】:

  • 感谢您的回复。我将jsontable.profession 编辑为staffs_table.profession 并尝试执行,但在JSON_TABLE 附近显示错误,说该表不存在
  • @canonngirwa 我编辑了 为什么???为什么需要编辑正确查询?
  • @canonngirwa 这是“关于错误的故事”。显示完整的错误消息,没有版本和限制。
  • ` #1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在 '(CONCAT('["', REPLACE(staffs_table.profession, '|', '","'), '"]')," 附近使用正确的语法第 3 行的 $[*]" COLUMNS' `
  • @canonngirwa 你的 MySQL 版本是多少?
猜你喜欢
  • 1970-01-01
  • 2014-04-28
  • 2021-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-11
相关资源
最近更新 更多