嘿我不知道这是否可能,但是我正在尝试获得一系列具有不同客户数量的商店,然后尝试计算每个商店的另外两个列,以确定此约会是否为初始或者随后的约会...这是我所拥有的。
SELECT year,
shopname,
COUNT (DISTINCT appointmentkey) custappoint,
SUM (CASE WHEN attendance = 'initial' THEN 1 ELSE 0 END) initialapp,
SUM (CASE WHEN attendance = 'subsequent' THEN 1 ELSE 0 END) subapp
FROM shoptable
WHERE shopType in ('local')
GROUP BY year, shopname
ORDER BY year, shopname
在约会期间,可能会发生各种各样的事情,在我们的数据库中,这是使用一个约会密钥在各行上编码的。这意味着,对于一次约会,约会键会多次出现,因此上面的代码会计算满足该条件的行数,并给出一个类似的表格。
shopname | custappoint | initialapp | subapp
-------- | ----------- | ---------- | ------
local1 | 44 | 48 | 89
期望的结果是初始和后续约会的总和应该等于总约会的数量。我试图在计数时添加“明显”的情况,但不要认为这是正确的路线。虽然我确信有人必须有类似的实例,但我在网上找不到类似的东西,所以转向你们!
由于
答案 0 :(得分:0)
如果每个appointmentkey
只能有一个attendance
值,那么您只需从不同行的派生表中进行选择:
SELECT year,
shopname,
COUNT (appointmentkey) custappoint,
SUM (CASE WHEN attendance = 'initial' THEN 1 ELSE 0 END) initialapp,
SUM (CASE WHEN attendance = 'subsequent' THEN 1 ELSE 0 END) subapp
FROM (
SELECT DISTINCT year, shopname, appointmentkey, attendance
FROM shoptable
WHERE shopType in ('local')
GROUP BY year, shopname
ORDER BY year, shopname
) t