我如何 select 根据日期在数组中区分?
How can I select distinct inside an array based on date?
我想(明确地)显示来自我的数据库 (PostgreSQL) 的值
这是我的代码:
SELECT distinct t.*, round(SUM(percentage)OVER (order by agentname rows between unbounded preceding and current row),3) AS cumulative
FROM (
SELECT
a.*,
COUNT(*) AS frequency,
round(COUNT(*) * 100.00 / SUM(COUNT(*)) OVER (),4) AS percentage
FROM
(select agentname,inputdate, unnest(array[ WSalamPembuka,WKonfirmasiNamaCust, WVerifikasiData,WKemampuanBertanya,WProductKnowledge,WSolusi,WAlternativeSolusi,WSistemPelaporan,WEmpati,WResponsif,WRamahSopan,WPercayaDiri,WHoldCall,WOfferHelp,WPenutup]) as weakness
from call )as a
WHERE a.agentname like '%wendra%' and a.weakness is not null and a.weakness !='' and a.inputdate between '01/12/2015' and '08/01/2016'
group by a.agentname,a.weakness,a.inputdate
order by frequency desc
) AS t
ORDER BY frequency DESC
我得到的结果是:
如您所见,我在这里得到了重复的数据。我希望它像:
有解决这个问题的技巧吗?
您得到重复项的原因是因为您按输入日期分组:
group by a.agentname,a.weakness,a.inputdate
只需从 group by
子句(以及外部 select
子句)中删除 inputdate
,您就会得到想要的结果(通过注释掉 [来注意我的更改) =12=]):
SELECT distinct t.*, round(SUM(percentage)OVER (order by agentname rows between unbounded preceding and current row),3) AS cumulative
FROM (
SELECT
a.*,
COUNT(*) AS frequency,
round(COUNT(*) * 100.00 / SUM(COUNT(*)) OVER (),4) AS percentage
FROM
(select agentname,inputdate, unnest(array[ WSalamPembuka,WKonfirmasiNamaCust, WVerifikasiData,WKemampuanBertanya,WProductKnowledge,WSolusi,WAlternativeSolusi,WSistemPelaporan,WEmpati,WResponsif,WRamahSopan,WPercayaDiri,WHoldCall,WOfferHelp,WPenutup]) as weakness
from call )as a
WHERE a.agentname like '%wendra%' and a.weakness is not null and a.weakness !='' and a.inputdate between '01/12/2015' and '08/01/2016'
group by a.agentname,a.weakness/*,a.inputdate*/
order by frequency desc
) AS t
ORDER BY frequency DESC
我想(明确地)显示来自我的数据库 (PostgreSQL) 的值 这是我的代码:
SELECT distinct t.*, round(SUM(percentage)OVER (order by agentname rows between unbounded preceding and current row),3) AS cumulative
FROM (
SELECT
a.*,
COUNT(*) AS frequency,
round(COUNT(*) * 100.00 / SUM(COUNT(*)) OVER (),4) AS percentage
FROM
(select agentname,inputdate, unnest(array[ WSalamPembuka,WKonfirmasiNamaCust, WVerifikasiData,WKemampuanBertanya,WProductKnowledge,WSolusi,WAlternativeSolusi,WSistemPelaporan,WEmpati,WResponsif,WRamahSopan,WPercayaDiri,WHoldCall,WOfferHelp,WPenutup]) as weakness
from call )as a
WHERE a.agentname like '%wendra%' and a.weakness is not null and a.weakness !='' and a.inputdate between '01/12/2015' and '08/01/2016'
group by a.agentname,a.weakness,a.inputdate
order by frequency desc
) AS t
ORDER BY frequency DESC
我得到的结果是:
如您所见,我在这里得到了重复的数据。我希望它像:
有解决这个问题的技巧吗?
您得到重复项的原因是因为您按输入日期分组:
group by a.agentname,a.weakness,a.inputdate
只需从 group by
子句(以及外部 select
子句)中删除 inputdate
,您就会得到想要的结果(通过注释掉 [来注意我的更改) =12=]):
SELECT distinct t.*, round(SUM(percentage)OVER (order by agentname rows between unbounded preceding and current row),3) AS cumulative
FROM (
SELECT
a.*,
COUNT(*) AS frequency,
round(COUNT(*) * 100.00 / SUM(COUNT(*)) OVER (),4) AS percentage
FROM
(select agentname,inputdate, unnest(array[ WSalamPembuka,WKonfirmasiNamaCust, WVerifikasiData,WKemampuanBertanya,WProductKnowledge,WSolusi,WAlternativeSolusi,WSistemPelaporan,WEmpati,WResponsif,WRamahSopan,WPercayaDiri,WHoldCall,WOfferHelp,WPenutup]) as weakness
from call )as a
WHERE a.agentname like '%wendra%' and a.weakness is not null and a.weakness !='' and a.inputdate between '01/12/2015' and '08/01/2016'
group by a.agentname,a.weakness/*,a.inputdate*/
order by frequency desc
) AS t
ORDER BY frequency DESC