【问题标题】:iterative count迭代计数
【发布时间】:2020-02-26 22:58:06
【问题描述】:

我有一个人表,其中包含每个人的唯一 ID。另一个表还包含他们的唯一 ID 和他们在某个商店的购买次数。我如何计算他们的购买次数?

SELECT 
    PERSON.ID, 
    PERSON.NAME, 
    (SELECT COUNT(*) WHERE PERSON.ID = PURCHASE.PERSON_ID) AS 'Total Purchases'
FROM PERSON_TABLE AS PERSON, PURCHASE_TABLE AS PURCHASE

此示例当前命令仅计算总购买次数。我如何计算每人的数量?

【问题讨论】:

  • 学会正确使用JOIN。它已经存在超过 25 年了。
  • @Eric 你能解释一下如何在我的具体情况下使用它吗?

标签: mysql sql join group-by


【解决方案1】:

你可以只使用聚合:

select pe.id, pe.name, count(pu.person_id) total_purchases
from person_table pe
left join purchase_table pu on pu.person_id = p.id
group by pe.id, pe.name

这为您提供purchase_table 中每一行person_table 中的记录数; left join 用于处理根本没有购买的人,在这种情况下,count(pu.person_id) 将产生0

【讨论】:

  • 我注意到一个“左连接”;你能解释一下这个命令是如何工作的吗?
  • 是否可以对该连接进行内部操作?假设我想查找总金额超过 20 美元的所有购买,(PURCHASE_TABLE.TOTAL) 我该怎么做?
猜你喜欢
  • 2020-08-09
  • 1970-01-01
  • 2022-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-05
相关资源
最近更新 更多