使用 group by 函数时如何在 mysql 中添加字符串或字符

how to add string or an of characters in mysql while using group by function

例如,我有一个名为 XYZ 的 table,它有一个列 COUNTRY,我如何使用 group by 函数以下列格式取出结果,

印度有 3 名员工

这里从 count() 中选择了 3,INDIA 按“GROUP BY”分组,我的问题是如何打印 'has' 以及 mySQl 之间和最后的员工

我正在 Oracle APEX 中学习 DBMS。 谢谢。

在MySQL/你想要的MariaDB

SELECT CONCAT_WS(' ', country, 'has', COUNT(*), 'employees')

在你想要的 Oracle 中

SELECT country || ' has ' || COUNT(*) || ' employees

Edit 这是普通的旧字符串处理。每种语言,包括每种 SQL 方言,都有自己的字符串处理方式。

您可以使用 Oracle 的 || 或 MariaDB / MySQL 的 CONCAT_WS() 生成任何类型的字符串。对于您的示例,它是

SELECT CONCAT_WS(' ', COUNT(*), 'employees from', country)

SELECT COUNT(*) || ' employees from ' || country

在Oracle中我们可以使用||来连接SELECT.[=37=中的字符串] 如果我们想列出 GROUP BY 中的所有值,我们可以使用 LISTAGG().
(在 mySQL 中,我们可以使用 CONCAT()CONCAT_WS() 进行简单连接,并使用 GROUP_CONCAT() 和 GROUP BY。)

CREATE TABLE Employee (
id int, 
name varchar(10),
country varchar(10));
INSERT INTO Employee VALUES (1,'Tom','India');
INSERT INTO Employee VALUES (2,'Dick','India');
INSERT INTO Employee VALUES (3,'Harry','India');
SELECT country || ' has ' || COUNT(id) ||  ' employees' AS report
FROM Employee
GROUP BY country;
| REPORT                |
| :-------------------- |
| India has 3 employees |
SELECT country, LISTAGG(name,', ') Employees
FROM Employee
GROUP BY country;
COUNTRY | EMPLOYEES       
:------ | :---------------
India   | Tom, Dick, Harry

db<>fiddle here