MYSQL 按行计数出现次数

问题描述 投票:0回答:1

希望有人能帮忙。

我在 Excel 中使用函数来生成半不同的引用,但我需要能够在 MYSQL 中复制它,并且目前正在努力。

在 Excel 中,我按行计数,但锚定在顶部参考点,因此通过设定的条件对我的列表进行索引

示例

我需要了解当一个人返回商店时,它将通过连接 Uniq 和 Count 来连接到一个新表(注意发票不是唯一的,可以稍后添加)

Uniq 姓名 水果 发票 结账时间
约翰苹果12345 约翰 苹果 12345 16:00 1
鲍勃奥兰治1211 鲍勃 橙色 1211 15:30 1
约翰苹果12345 约翰 苹果 12345 16:45 2
弗兰克葡萄1300 弗兰克 葡萄 1300 11:00 1
约翰苹果1000 约翰 苹果 1000 9:45 1
约翰苹果12345 约翰 苹果 1234 20:00 3

如何获得 Uniq 的运行计数?正如 Excel 中所述,我将在 Count 列中的 Uniq 上运行 countif,仅锚定公式的 1 端,以便它会随着列表的继续而增加

** 作为参考,我希望能够加入约翰驾驶的汽车类型,如果他在 16:00 的旅程中驾驶福特,在 16:45 驾驶宝马 - 下面是正在发生的情况的示例

Uniq 姓名 水果 发票 结账时间 加入CarType
约翰苹果12345 约翰 苹果 12345 16:00 福特
约翰苹果12345 约翰 苹果 12345 16:00 宝马
约翰苹果12345 约翰 苹果 12345 16:45 福特
约翰苹果12345 约翰 苹果 12345 16:45 宝马
约翰苹果12345 约翰 苹果 1234 20:00 福特
约翰苹果12345 约翰 苹果 1234 20:00 宝马

提前致谢

我尝试使用左连接仅连接 Uniq,但它会重复行,例如,如果我想表明约翰第一次进来时开的是福特,但第二次他开的是宝马

Uniq 姓名 水果 发票 结账时间 加入CarType
约翰苹果12345 约翰 苹果 12345 16:00 1 福特
约翰苹果12345 约翰 苹果 12345 16:00 1 宝马
约翰苹果12345 约翰 苹果 12345 16:45 2 福特
约翰苹果12345 约翰 苹果 12345 16:45 2 宝马
约翰苹果12345 约翰 苹果 1234 20:00 3 福特
约翰苹果12345 约翰 苹果 1234 20:00 3 宝马
mysql join count
1个回答
0
投票

使用

ROW_NUMBER()
并通过
joined_cartype
对每个
uniq
进行分区。

MySQL查询:

select *,
 ROW_NUMBER() OVER (partition by uniq, joined_cartype) as count
from T
order by uniq, count, joined_cartype desc

输出示例:

enter image description here

测试查询:db<>fiddle

© www.soinside.com 2019 - 2024. All rights reserved.