[英]How to get the most frequent values from a column using mysql
我想从数据库中获取订购最多的商品。
例如:我有一张下表:
S.no-----Name--------Items
1---------rob------------Pen, pencil, rubber
2---------jim------------rubber, scissor
3--------rick------------pen,pencil
我想获取大多数订购商品,如下所示
S.no---item-------Count
1------Pen---------2
2------Pencil------2
3------Rubber------1
4------Scissor-----1
以下是我正在使用的查询
SELECT name, items, count(items) AS cnt FROM tbl_orderitem GROUP BY items ORDER BY cnt DESC
但无法达到我想要的结果
这是一种方法。 您需要将这些项目分成几行。
然后,您可以根据分组并计数。
下面的示例SQL仅对4个数字使用子查询。
但这可以由仅包含数字的理货单代替。
可以在这里找到Sql Fiddle测试
SELECT
TRIM(
LOWER(
SUBSTRING_INDEX(
SUBSTRING_INDEX(Items, ',', numbers.n), ',', -1))) AS Item,
COUNT(*) AS Total
FROM testtable
JOIN (SELECT 1 n UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4) numbers
ON CHAR_LENGTH(Items)-CHAR_LENGTH(REPLACE(Items,',','')) >= numbers.n-1
GROUP BY Item
ORDER BY Total DESC;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.