繁体   English   中英

如何使用mysql从列中获取最频繁的值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM