基于单个列值的循环和插入 SQL
Posted
技术标签:
【中文标题】基于单个列值的循环和插入 SQL【英文标题】:Looping and inserting based on individual column values SQL 【发布时间】:2018-03-22 21:23:05 【问题描述】:有问题的表是Purchases (pid, cid, pdate, eid)
,其中pid
是主键,因此代表个人购买。 cid
代表购买的客户。我必须得到所有购买超过 5 次的客户,并给他们一张免费票(为 cid
创建一个新条目)。最好的方法是什么?
【问题讨论】:
祝你作业顺利......该死的学校! 【参考方案1】:对表进行内部联接(如果您需要客户的姓名)并按 CID 分组 有计数(CID)> 5
【讨论】:
【参考方案2】:在编写复杂的 SQL 查询时,最好的方法之一是迭代开发...从小处着手,然后从那里开始。
例如,获取至少购买过一次的每位客户的购买计数:
SELECT p.cid
, COUNT(1) AS cnt_purchases
FROM purchase p
GROUP BY p.cid
ORDER BY p.cid
注意GROUP BY
子句和聚合COUNT
函数的用法。
如果我们想要相同的结果,但想要排除只购买过一次的客户怎么办?我们可以在 HAVING
子句中包含聚合函数结果的条件。
例如:
SELECT p.cid
, COUNT(1) AS cnt_purchases
FROM purchase p
GROUP BY p.cid
HAVING COUNT(1) > 1
ORDER BY p.cid
应该很容易看出我们如何排除购买少于五次的客户。
这些是我们在尝试解决更复杂的问题之前需要了解的模式。
(该问题不包括任何 SQL,并且没有表明对如何使用GROUP BY
或聚合函数获取“计数”有任何了解。)
【讨论】:
以上是关于基于单个列值的循环和插入 SQL的主要内容,如果未能解决你的问题,请参考以下文章
有没有一种有效的方法来计算 Pandas 中的列值,使用基于其他列的条件值的前行的值?