我有一个包含50列的表,名为public_report。我想要特定列的计数(不同)以及所有列,因为我需要在Tableau中运行它
select count(distinct l.lead_key), l.*
from public_report l
group by l.lead_key
我执行查询时遇到此错误
尝试执行查询时发生错误:[SQLState 42803] 错误:“ l.enquiry_key”列必须出现在GROUP BY子句中或 在聚合函数中使用
II尝试添加l.enquiry_key,但它也添加了其他列名称。大约有50列可以有人建议。
也尝试过
select t.lk, t.c, lp.*
from (select lead_key lk, count(distinct lead_key) c
from public_report
group by lead_key) t
join public_report lp
on lp.lead_key = t.lk
但这不能给我正确的计数。
此表具有8700000个不同的lead_key值。但是我得到14565498作为d值
请帮助
答案 0 :(得分:0)
也许您想要一个相关的子查询?
select p.*, (select count(*) from public_report p2
where p2.lead_key = p.lead_key)
from public_report p
答案 1 :(得分:0)
如果您想知道不同的Lead_key的数量,则不应为要汇总的同一行分组
select count(distinct l.lead_key)
from public_report l
如果您想对每个键进行计数,请使用按分组的ket和count(*)
select l.lead_key, count(*)
from public_report l
group by l.lead_key
如果您希望将count(distinct l.lead_key)排除在other列之外,则可以使用交叉联接
select lp.*, t. my_count
from public_report lp
cross join (
select count(distinct l.lead_key) my_count
from public_report l
) t
如果您想将其他lead_key的计数排除在其他列之外,则可以将内部联接与subwuery一起使用,分组为
select lp.*, t.my_lk_count
from public_report lp
inner join (
select l.lead_key, count(*) my_lk_count
from public_report l
group by l.lead_key
) t ON t.lead_key = lp.lead_key
答案 2 :(得分:0)
这是您想要的吗?
select lp.*, t.count_distinct
from public_report lp cross join
(select count(distinct lead_key) as count_distinct
from public_report
) t;
或者,因为大多数数据库都支持count(distinct)
作为窗口函数:
select pr.*, count(distinct lead_key) over () as count_distinct
from public_report pr