如何为GROUP BY查询中的每个组返回某个列的最频繁值?

dodecafonico

我有这个示例表:

  sort_order  product      color    productid   price
  ----------  -------      ------   ---------   -----
      1       bicycle       red      2573257     50
      2       bicycle       red      0983989     40
      3       bicycle       red      2093802     45
      4       bicycle       blue     9283409     55
      5       bicycle       blue     3982734     60
      1       teddy bear    brown    9847598     20
      2       teddy bear    black    3975897     25
      3       teddy bear    white    2983428     30
      4       teddy bear    brown    3984939     35
      5       teddy bear    brown    0923842     30
      1       tricycle      pink     2356235     25
      2       tricycle      blue     2394823     30
      3       tricycle      blue     9338832     35
      4       tricycle      pink     2383939     30
      5       tricycle      blue     3982982     35

我想查询一个返回产品,平均价格和最常见颜色的查询。

因此,本例中的查询将返回:

product      most_frequent_color     average_price
-------      -------------------     -------------
bicycle      red                     50
teddy bear   brown                   28
tricycle     blue                    31

仅按产品分组并使用avg(price),平均部分似乎很容易,但是我该如何解决最频繁的颜色部分呢?

这是我到目前为止可以弄清楚的查询,但是我不知道如何为每个组获取most_frequent_color:

SELECT product, avg(price) AS average_price from products
WHERE sort_order <= 5
GROUP BY product

在我的真实世界表中,通常每个组的行数都比我感兴趣的多,因此我只能使用sort_order字段获得有限的行数

对于在“颜色”的所有行中都为null或具有一种以上最频繁的颜色的稀有组,我想在返回的most_frequent_color列中返回null

感谢您对此的任何帮助!

议会

您可以在SELECT子句中使用其他查询,以对相同数据有效地执行汇总查询:

SELECT   t.product,
         Avg ( t.price ) AS average_price,
         (
                  SELECT   IF ( Count(*) = t4.count, NULL, t2.color ) 'color'
                  FROM     products t2
                  JOIN
                           (
                                    SELECT   t3.product,
                                             t3.color,
                                             count(*) 'count'
                                    FROM     products t3
                                    GROUP BY t3.product ,
                                             t3.color
                                    ORDER BY count(*) DESC
                           ) t4
                  ON       t2.product = t4.product
                           AND t2.color <> t4.color
                  WHERE    t2.product = t.product
                  GROUP BY t2.color
                  ORDER BY count(*) DESC limit 1
         ) AS most_frequent_color
FROM     products t
WHERE    t.sort_order <= 5
GROUP BY t.product

因此,我们链接products使用product的第二个副本,在列表顶部选择最频繁使用的每种颜色(针对该产品)的计数,然后仅选择第一行-因此该产品的最频繁使用的颜色值。

这与内联视图(放置在FROM查询子句中)不同。

注意:这将与MySQL一起使用,但是与数据库无关。

更新:现在检查具有相同频率的一种以上颜色,并返回null。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何检索表中特定 ID 的列的最频繁值

来自分类Dev

RoR:如何进行查询以返回每个组的总和值?

来自分类Dev

在group_by操作之后,dplyr如何为每个组生成数据帧?

来自分类Dev

如何使Excel在一个单元格中返回最频繁的值?

来自分类Dev

返回每个组的最频繁的字符串值

来自分类Dev

LINQ Group By Sum如何为十进制类型字段返回null

来自分类Dev

如何为管道“ |”编写选择查询 列中的分隔值?

来自分类Dev

如何为setValue返回多个列值

来自分类Dev

使用查询在MS Access中使用SQL返回最频繁的值和组中的计数

来自分类Dev

如何为每个组创建唯一值?

来自分类Dev

如何为每个组设置熊猫数据框中前几行的值

来自分类Dev

如何为熊猫multiindex中每个零级组的第一行分配值

来自分类Dev

如何为同一组中的每个值分配一个顺序编号?蟒蛇

来自分类Dev

如何为数据框中的每个组运行 for 循环?

来自分类Dev

流星:如何为集合中的每个值仅返回一个条目

来自分类Dev

如何为单个查询缓存函数的返回值

来自分类Dev

如何为查询中的每个基础行获取单独的结果?

来自分类Dev

如何为jooq中的每个查询添加动态ID

来自分类Dev

在 Microsoft SQL 中,如何为每个 ID 仅返回 1 行并带有多列结果

来自分类Dev

如何对MYSQL进行多次插入,每个插入都基于子查询的一组值中的每个值?

来自分类Dev

如何为每个键分配相同的值?

来自分类Dev

如何为每个键分配相同的值?

来自分类Dev

如何为HashMap的每个键计算值?

来自分类Dev

如何为ManyToMany查询返回完全匹配

来自分类Dev

我如何使用按列1分组并在bigquery的同一输出中获得最频繁出现的列2

来自分类Dev

如何为列表中的每个单词分配值

来自分类Dev

如何为列表中的每个值显示按钮?

来自分类Dev

如何为每个循环停止

来自分类Dev

如何从子查询返回的一组值中检索最小值

Related 相关文章

  1. 1

    如何检索表中特定 ID 的列的最频繁值

  2. 2

    RoR:如何进行查询以返回每个组的总和值?

  3. 3

    在group_by操作之后,dplyr如何为每个组生成数据帧?

  4. 4

    如何使Excel在一个单元格中返回最频繁的值?

  5. 5

    返回每个组的最频繁的字符串值

  6. 6

    LINQ Group By Sum如何为十进制类型字段返回null

  7. 7

    如何为管道“ |”编写选择查询 列中的分隔值?

  8. 8

    如何为setValue返回多个列值

  9. 9

    使用查询在MS Access中使用SQL返回最频繁的值和组中的计数

  10. 10

    如何为每个组创建唯一值?

  11. 11

    如何为每个组设置熊猫数据框中前几行的值

  12. 12

    如何为熊猫multiindex中每个零级组的第一行分配值

  13. 13

    如何为同一组中的每个值分配一个顺序编号?蟒蛇

  14. 14

    如何为数据框中的每个组运行 for 循环?

  15. 15

    流星:如何为集合中的每个值仅返回一个条目

  16. 16

    如何为单个查询缓存函数的返回值

  17. 17

    如何为查询中的每个基础行获取单独的结果?

  18. 18

    如何为jooq中的每个查询添加动态ID

  19. 19

    在 Microsoft SQL 中,如何为每个 ID 仅返回 1 行并带有多列结果

  20. 20

    如何对MYSQL进行多次插入,每个插入都基于子查询的一组值中的每个值?

  21. 21

    如何为每个键分配相同的值?

  22. 22

    如何为每个键分配相同的值?

  23. 23

    如何为HashMap的每个键计算值?

  24. 24

    如何为ManyToMany查询返回完全匹配

  25. 25

    我如何使用按列1分组并在bigquery的同一输出中获得最频繁出现的列2

  26. 26

    如何为列表中的每个单词分配值

  27. 27

    如何为列表中的每个值显示按钮?

  28. 28

    如何为每个循环停止

  29. 29

    如何从子查询返回的一组值中检索最小值

热门标签

归档