大佬教程收集整理的这篇文章主要介绍了从 3 个不同的表中选择数据分组并限制为 3,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有 3 个表,分别命名为 Referrals、ProvIDers、suppliers。
供应商表
| ID | name
| 1 | supplier A
| 2 | supplier B
| 3 | supplier C
| 4 | supplier D
供应商表
| ID | name
| 1 | ProvIDer A
| 2 | ProvIDer B
| 3 | ProvIDer C
| 4 | ProvIDer D
推荐表
| ID | clIEnt_name | provIDer_ID | supplier_ID | created_at
| 1 | ClIEnt A | 1 | 1 | 2021-01-20
| 2 | ClIEnt B | 1 | 1 | 2021-01-21
| 1 | ClIEnt C | 2 | 1 | 2021-01-22
| 1 | ClIEnt A | 2 | 2 | 2021-01-23
| 1 | ClIEnt A | 3 | 2 | 2021-01-24
| 1 | ClIEnt A | 1 | 3 | 2021-01-24
| 1 | ClIEnt A | 4 | 3 | 2021-01-25
| 1 | ClIEnt A | 4 | 4 | 2021-01-26
| 1 | ClIEnt A | 1 | 1 | 2021-01-20
我想按以下格式按供应商(前 3 名)计算每个供应商的推荐次数:
结果格式应为:
| ID | referral_count | provIDer_ID | supplier_ID | created_at
| 1 | 3 | 1 | 1 | January
| 2 | 2 | 1 | 1 | January
| 1 | 1 | 2 | 1 | January
| 1 | 2 | 2 | 2 | January
| 1 | 3 | 3 | 2 | January
| 1 | 1 | 1 | 2 | January
| 1 | 2 | 4 | 3 | January
| 1 | 3 | 4 | 3 | January
| 1 | 4 | 1 | 3 | January
谢谢
如果我理解正确,您只需要一个 count()
作为窗口函数:
select r.*,count(*) over (partition by provider_id,supplier_id,year(created_at),month(created_at)) as referral_count
from referrals r;
,
如果你的mysql版本是8或更高,你可以使用count(*)
窗口函数来实现:
select
id,(count(client_name) over (partition by provider_id,monthname(created_at))) referral_count,provider_id,monthname(created_at) created_at
from Referrals;
如果您使用的是旧版本的 MySQL,那么您可以在子查询中使用以下选项:
select id,(select count(*) from Referrals rf where rf.provider_id=r.Provider_id and rf.supplier_id=r.supplier_id
group by provider_id,monthname(created_at)) referral_count,monthname( created_at) created_at
from Referrals r;
输出:
id | provider_id | supplier_id | referral_count | created_at |
---|---|---|---|---|
1 | 1 | 1 | 3 | 一月 |
2 | 1 | 1 | 3 | 一月 |
1 | 2 | 1 | 1 | 一月 |
1 | 2 | 2 | 1 | 一月 |
1 | 3 | 2 | 1 | 一月 |
1 | 1 | 3 | 1 | 一月 |
1 | 4 | 3 | 1 | 一月 |
1 | 4 | 4 | 1 | 一月 |
1 | 1 | 1 | 3 | 一月 |
以上是大佬教程为你收集整理的从 3 个不同的表中选择数据分组并限制为 3全部内容,希望文章能够帮你解决从 3 个不同的表中选择数据分组并限制为 3所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。