MySQL中没有子查询字段的模式计算?

2024-02-02

在我的应用中,每个产品组有很多产品,每个产品有一个制造商。这些关系由 MySQL 存储在 InnoDB 表中product_groupsid场,以及products with id, product_group and manufacturer fields.

有没有一种方法可以在不选择子查询的情况下找到每个产品组中最常见的制造商?

这就是我目前正在做的:

SELECT product_groups.id,
  (
    SELECT manufacturer FROM products
    WHERE product_group = product_groups.id
    GROUP BY manufacturer
    ORDER BY count(*) DESC
    LIMIT 1
  ) manufacturer_mode
FROM product_groups;

尝试这个解决方案:

SELECT
    a.product_group,
    SUBSTRING_INDEX(GROUP_CONCAT(a.manufacturer ORDER BY a.occurrences DESC SEPARATOR ':::'), ':::', 1) AS manufacturer_mode
FROM
    (
        SELECT
            aa.product_group,
            aa.manufacturer,
            COUNT(*) AS occurrences
        FROM
            products aa
        GROUP BY
            aa.product_group,
            aa.manufacturer
    ) a
GROUP BY
    a.product_group

解释:

这仍然使用一种子查询形式,但它只执行一次,而不是像原始示例那样逐行执行。

它的工作原理是首先选择product_groupid、制造商以及制造商在每个特定组中出现的次数。

The FROM子选择执行后看起来像这样(这里只是弥补数据):

product_group   |   manufacturer   |    occurrences
---------------------------------------------------
1               |   XYZ            |    4
1               |   Test           |    2
1               |   Singleton      |    1
2               |   Eloran         |    2
2               |   XYZ            |    1

现在我们有了子选择结果,我们需要选出具有最大值的行occurences每个产品组的字段。

在外部查询中,我们再次按product_group场,但这一次,only the product_group场地。现在当我们做我们的GROUP BY在这里,我们可以使用 MySQL 中一个非常引人注目的函数,称为GROUP_CONCAT我们可以使用它以我们想要的任何顺序将制造商连接在一起。

...GROUP_CONCAT(a.manufacturer ORDER BY a.occurrences DESC SEPARATOR ':::'...

我们在这里所做的是将按每个分组在一起的制造商连接在一起product_group是个ORDER BY a.occurrences DESC确保出现次数最多的制造商first在串联列表中。最后我们将每个制造商分开:::。这样做的结果为product_group 1看起来像:

XYZ:::Test:::Singleton

XYZ首先出现,因为它具有最高的值occurance场地。我们only想要选择XYZ,所以我们将串联包含在SUBSTRING_INDEX,这将允许我们仅根据:::分隔符。

最终结果将是:

product_group    |    manufacturer_mode
---------------------------------------
1                |    XYZ
2                |    Eloran
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL中没有子查询字段的模式计算? 的相关文章

随机推荐

  • 如何从全局范围内调用 jquery 函数内的方法?

    我正在寻找一种方法来调用 jquery 函数内的方法 示例 在上面的代码中 我如何调用method 全局范围的方法 function fn test function var method function alert test succe
  • 创建私有远程ivy存储库

    我已经做了很多搜索 但无法将所有部分放在一起 我想在我们的一台服务器上创建一个 ivy 存储库 我想将其锁定 使其成为私有的 然后能够从 Gradle 发布到此存储库 我知道如何使用 Gradle 进行发布 并且我可以使用 Gradle 创
  • npm 命令在 ubuntu 上不起作用

    我在 Ubuntu 14 04 上安装了 node 和 npm 当我尝试使用任何 npm 命令时 出现以下错误 usr local lib node modules npm lib config cmd list js 113 module
  • jQuery UI 的对话框无法在 ASP.NET 上运行

    我有以下测试 ASPX 页面
  • Visual Studio 2019 IntelliTest 与 .NET Core、.NET Standard 的兼容性?

    我正在最新版本的 Visual Studio Enterprise 中评估 Intellitest 据我自己在各个网站上的尝试和研究来看 IntelliTest 似乎只与 NET Framework 兼容 不兼容 NET Standard
  • HBase:复制是如何工作的?

    我目前正在将 HBase 作为数据存储进行评估 但有一个问题没有得到解答 HBase 在许多节点上存储同一对象的许多副本 也称为复制 由于HBase具有所谓的强一致性 相比之下最终一致 它保证每个副本在读取时返回相同的值 据我了解 HBas
  • 如何检查公共MSMQ是否为空

    有没有办法检查公共 MSMQ 是否为空 对于私有 MSMQ 来说很简单 private bool IsQueueEmpty string path bool isQueueEmpty false var myQueue new Messag
  • TFS 2010:服务不可用 503

    我已经尝试解决这个问题大约一周了 我在微软网站上发布了这个问题 但只收到了一条回复 这并没有解决我的问题 以下是我在微软网站上的帖子的组合 我在 Window 7 PC 64 位上安装并配置了 TFS 2010 当我导航到http loca
  • python 中压缩时出现 LEN 错误

    def shufflemode import random combined zip question answer random shuffle combined question answer zip combined 但后来我收到错误
  • 为什么 IQueryables 没有 SingleOrDefaultAsync?

    以下代码无法编译 因为 SingleOrDefaultAsync 不是 GetAppointments 的合适扩展 我只是想知道为什么 public IQueryable
  • Internet Explorer 7/8 和窗口函数是空对象

    在 Internet Explorer 8 中 也适用于 IE7 8 模式下的 IE9 以下代码会发出警报object and undefined而不是预期的function和类似的东西function native code alert
  • Lambda 函数作为基类

    在使用 Lambda 时 我发现了一个我并不完全理解的有趣行为 假设我有一个struct Overload派生自 2 个模板参数 并且有一个using F1 operator clause 现在 如果我从两个函子派生 我只能访问 F1 的运
  • MySQL COUNT() 跨多列

    我已经为这个问题绞尽脑汁有一段时间了 但似乎无法让它发挥作用 我有一个表 其中除了其他标准字段外 还有一些用于同类不同值的字段 例如 INT 每个字段的值都是唯一的 gt 意思是如果它出现在val 1它不会出现在val 2 and val
  • 如何在 PHP 中获取字符串的字节值?

    假设我在 php 中有一个字符串 它打印到一个文本文件中 如下所示 n 9q1F 我如何将其字节码而不是时髦的 ascii 字符获取到我的文本文件中 使用 ord 函数 http ca php net ord http ca php net
  • 如何加速 Jekyll/Octopress 生成?

    我使用 Octopress 作为我的博客引擎 这是完美的 但如果帖子很多 比如400 个帖子 生成的速度就太慢了 那么 有什么办法可以加快 Jekyll Octopress 的生成速度呢 Thanks 显然 如果您只处理一篇文章 则无需等待
  • Android Studio 构建时间与 Gradle 依赖项与 Jar 依赖项

    我正在开发一个使用 4 个外部库的产品 所有这些库都通过外部罐子包含在内 Jar 依赖项的构建时间约为 10 分钟 我用 Gradle 依赖项更改了 Jar 依赖项 然后构建时间达到了 3 5 分钟 之前的依赖关系 10 分钟构建时间 co
  • Swift 中的元组数组

    我有一个功能 func parseJSON3 inputData NSData gt NSArray var tempDict id Int ccomments Int post date String post title String
  • WordPress 中的自定义重写规则

    我在内部 WordPress 重写规则方面遇到了麻烦 我已阅读此主题 但仍然无法得到任何结果 WordPress 插件中的 wp rewrite https stackoverflow com questions 2210826 need
  • 在 HANA 中上传数组

    我是 SAP HANA 的新手 最近将一些数据库迁移到它 发现它的性能非常好 我面临的问题是我无法上传array column在哈纳 但我发现有一种方法可以使用以下方法在 HANA 中插入数组 INSERT INTO T1 VALUES 1
  • MySQL中没有子查询字段的模式计算?

    在我的应用中 每个产品组有很多产品 每个产品有一个制造商 这些关系由 MySQL 存储在 InnoDB 表中product groups与id场 以及products with id product group and manufactur