数据分析之sql篇

刚才在琢磨客户分析的时候,突然想到一个假设,如果某个客户的续约率很高,那么证明他在产品的使用上效果是很好的,如果这些些产品的组合十分有效,那么查看其他类似的客户的续约率,做一次论证应该是有意义的。于是就有了下面的一段SQL,虽然自认数据库功底尚可,当初头疼的not exists如今依然有点拐不过来弯,差点给自己绕沟里。

写上备忘吧,由于sql没有全称量词(for all),只能将这种查询需求转换为存在量词,也即做这样的转换,查询至少选择了客户“zpA”所有套餐的客户名称等同于查询这样一种客户的名称,不存在客户zpA的任一种套餐,是这种客户没有选择过的。(双重not exists)

SELECT DISTINCT Cno
FROM customer cusA
WHERE NOT EXISTS
      (SELECT * 
       FROM customer cusB
       WHERE cusB.Cno = 'zpA' AND 
             NOT EXISTS
             (SELECT *
              FROM customer cusC
              WHERE cusC.Cno=cusA.Cno AND
                    cusC.Product=cusB.Product));

 

posted @ 2016-03-17 22:48  迈克儿  阅读(328)  评论(0编辑  收藏  举报