使用 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
例如,我有一个名为 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