计算 MySQL JSON 表中数组内项目的第一个出现次数



我有一个MySQL表,其中给定时期内的所有公司销售都按单位,日期分组,并在数组中按每次销售中涉及的所有销售代表ID分组。 每个数组中的第一个sales_rep ID 显示负责完成每笔销售的销售代表。 我正在尝试详细说明一个查询,该查询返回完成每笔销售的每个销售代表的单位、日期和sales_rep ID。 如果给定日期多次显示sales_rep ID,则可以。

我有什么作为输入:

unit_id   date   unit_sales   sales_reps
427     2019-07-01   3     [["19823508","19823510",""],["23661230","23661227","23411261",""],["23411257","19823508",""]]
466     2019-07-26   2     [["23222763","23222766","26726848","26726849",""],["23222763",""]]

所需的输出为:

unit_id   date      sales_rep
427     2019-07-01  19823508
427     2019-07-01  23661230
427     2019-07-01  23411257
466     2019-07-26  23222763
466     2019-07-26  23222763

这太长了,无法发表评论。

确实应该考虑修复数据模型。将结构化数据(csv、数组等(存储在文本列中会在很多方面咬你。通常,您要在此处执行的操作必然涉及具有大量复杂性的 SQL。通过采用更适合您的用例的数据模型可以避免这种情况,例如:

  • 创建一个单独的表来存储每个单位销售中涉及的销售代表的列表,并带有一个布尔列,指示哪个销售代表完成了销售;这似乎是正确的方法

  • 或者,作为中间解决方案,将文本列转换为 JSON 列:这不太干净,但至少您可以在访问数据时利用 JSON 函数

相关阅读: 在数据库列中存储分隔列表真的那么糟糕吗?

相关内容

最新更新