希望有人能帮忙。
我在 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 | 宝马 |
使用
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
输出示例:
测试查询:db<>fiddle