我有包含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结果
答案 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
这可能会更快。