是否有其他选择可从表中获得总计数以及同一查询中一列的非重复计数?

时间:2019-12-14 07:25:36

标签: mysql sql amazon-redshift

我有包含4条记录的表,这些记录具有相似的事件名​​称和2个不同的设备ID,我想要总计。具有唯一设备ID的记录总数。

Mysql给出了完美的结果,但是redshift提供了错误的数据。

CREATE TABLE test (
  event_name varchar(50)  NOT NULL,
  deviceid int NOT NULL
);

INSERT INTO test (event_name, deviceid) VALUES
('install', 1),
('install', 1),
('install', 2),
('install', 1);

select count(event_name), count(distinct(deviceid)) from test;

MySQL结果

enter image description here

2 个答案:

答案 0 :(得分:0)

您应在没有session.Query<Obj1>().Fetch(x => x.Obj2.Obj3).Select(x => new { x.Obj2, x.Obj2.Obj3 }); Distinct的情况下使用(

)

SELECT count(event_name), COUNT(Distinct deviceid) 
FROM Test;

答案 1 :(得分:0)

据我所知,Redshift应该正确处理此查询:

select count(event_name), count(distinct deviceid)
from test;

也就是说,根据我对RedShift的经验,count(distinct)相当慢,尤其是在整个表上。 (这可能是固定的。)

如果仍然是这种情况,那么一个简单的解决方法是:

select sum(cnt) as row_count, count(*) as distinct_count
from (select deviceid, count(*) as cnt
      from test
      group by deviceid
     ) t

这可能会更快。