如何从MySQL中的值计算首字母?
我在MySQL中有一个名为“customers”的表,其中包含如何从MySQL中的值计算首字母?,mysql,count,sum,Mysql,Count,Sum,我在MySQL中有一个名为“customers”的表,其中包含 SELECT id, name, left(UPPER(name),1) AS letter 得到这个: id | name | letter 1 John J 2 James J 3 Julia J 4 Lauren L 5 Peter P 6 Pietro P 但现在我需要计算一下首字母的总数 id | name
SELECT id, name, left(UPPER(name),1) AS letter
得到这个:
id | name | letter
1 John J
2 James J
3 Julia J
4 Lauren L
5 Peter P
6 Pietro P
但现在我需要计算一下首字母的总数
id | name | letter | total
1 John J 3
2 James J 3
3 Julia J 3
4 Lauren L 1
5 Peter P 2
6 Pietro P 2
我(暂时)解决了它
,但我的原始查询包含许多内部连接,因此,最后一次选择重复了内部连接和位置(可能不必要)
有什么建议吗?将其包装在外部选择中:
select id, name, count(*)
from (SELECT id, name, left(UPPER(name),1) AS letter
from da_table) as dummy
group by id, name;
。。。里面的select有你邪恶的连接
哎呀,我应该读的。只需将查询更改为仅从内联视图中提取“字母”,对它们进行计数并按“字母”分组
将其包裹在外部选择框中:
select id, name, count(*)
from (SELECT id, name, left(UPPER(name),1) AS letter
from da_table) as dummy
group by id, name;
。。。里面的select有你邪恶的连接
哎呀,我应该读的。只需将查询更改为仅从内联视图中提取“字母”,对它们进行计数并按“字母”分组
将第一个查询与获取每个初始值计数的子查询连接起来
SELECT id, name, letter, total
FROM customers AS c
JOIN (SELECT UPPER(LEFT(name, 1)) AS letter, COUNT(*) AS total
FROM customers
GROUP BY letter) AS l
ON l.letter = UPPER(LEFT(c.name, 1))
将第一个查询与获取每个初始值计数的子查询连接起来
SELECT id, name, letter, total
FROM customers AS c
JOIN (SELECT UPPER(LEFT(name, 1)) AS letter, COUNT(*) AS total
FROM customers
GROUP BY letter) AS l
ON l.letter = UPPER(LEFT(c.name, 1))
选择计数(*),左(名称,1)。。。按左分组(姓名,1)
,基本上?是的,用“分组方式”只显示每个字母(约翰、劳伦、彼得)的名字,但计数正常选择计数(*),左(姓名,1)。。。按左分组(姓名,1)
,基本上?是的,用“分组方式”只显示每个字母的首字母(约翰、劳伦、彼得),但计数是好的,太快了!谢谢嘿,那太快了!谢谢