【发布时间】:2014-03-25 14:29:16
【问题描述】:
我正在使用按功能分组从我的小商店购买一些产品,例如:
select name, ProductID from blog group by ProductID
+----------------------------------------------------------+
| name |
+----------------------------------------------------------+
| AAA |
| BBBB |
| CCCC |
| DDDDDDDD |
+----------------------------------------------------------+
groupby函数中是否可以得到平均长度名称?
编辑(来自 OP,放在答案中):
myysql> select length(name) as len, name from product where article=40 order by len asc;
+------+----------------------------------------------------------+
| len | name |
+------+----------------------------------------------------------+
| 3 | aaa |
| 6 | BBBBBB |
| 6 | CCCCCC |
| 8 | dddddddd |
+------+----------------------------------------------------------+
4 rows in set (0.00 sec)
通过这个例子,我需要得到一个值,比如 BBBBBB 或 CCCCCC (AVG?)
【问题讨论】:
-
mysql 中字符串的长度为
CHAR_LENGTH,因此在您的情况下为MAX(CHAR_LENGTH(name))/COUNT(DISTINCT(name)),但这在索引方面效率非常低。如果这是您需要的,您应该有一个单独的列,其中预先计算了长度。如果没有,您应该更好地阐明您需要什么。 -
在你的例子中,答案是什么? 1 值为 4.75 ((3+4+4+8)/4)?或者对于每一行,名称的平均长度,因为每个 ProductID 有超过 1 个名称?
-
通过这个例子,我需要 BBBB 或 CCCC 不是最小的长度,也不是最长的长度
标签: mysql group-by string-length