Mysql 从一个表中获取一列的计数,并在另一个表中获取匹配的相同列的计数
我有两张桌子,如下所示Mysql 从一个表中获取一列的计数,并在另一个表中获取匹配的相同列的计数,mysql,Mysql,我有两张桌子,如下所示 table 1: raw dateCol id 1 01.01.2001 00:00:00 AAPL 2 02.01.2001 00:00:00 MSFT 3 03.01.2001 00:00:00 INFY table 2: universe udateCol uid 1 01.01.2001 00:00:00 AAPL 2 02.01.2001 00:00:00 GOOGL 3 03.01.2001 00
table 1: raw
dateCol id
1 01.01.2001 00:00:00 AAPL
2 02.01.2001 00:00:00 MSFT
3 03.01.2001 00:00:00 INFY
table 2: universe
udateCol uid
1 01.01.2001 00:00:00 AAPL
2 02.01.2001 00:00:00 GOOGL
3 03.01.2001 00:00:00 INFY
我想从原始数据中提取ID计数,并从与universe中UID的原始匹配中提取ID计数。因此,我在Mysql中尝试了以下查询:
select universe.udateCol, count(raw.id) as rawCount, count(universe.uid) as uniCount from universe left join raw on universe.udateCol = raw.dateCol AND raw.id = universe.uid group by universe.udateCol order by universe.udateCol;
使用上面的查询,我得到以下输出
udateCol rawCount uniCount
1 01.01.2001 00:00:00 1 1
2 02.01.2001 00:00:00 0 1
3 03.01.2001 00:00:00 1 1
但我希望输出像:
udateCol rawCount uniCount
1 01.01.2001 00:00:00 1 1
2 02.01.2001 00:00:00 1 0
3 03.01.2001 00:00:00 1 1
如果有人想现场检查,那么可以检查
编辑1:
我想获得每个日期的原始表中存在的计数,以及在同一日期宇宙表中匹配的计数
SELECT DATE(A.dateCol) dateCol, COUNT(A.id) rawCount, COUNT(B.id) uniCount
FROM raw A LEFT JOIN universe B
ON A.id=B.uid AND DATE(A.dateCol)=DATE(B.udateCol)
GROUP BY DATE(A.dateCol);
没有答案。评论时间太长了,有点厌倦了从这块石头上抽血 考虑以下几点:
drop table if exists raw;
drop table if exists universe;
create table raw(dateCol date, id VARCHAR(20),PRIMARY KEY(datecol,id));
create table universe(udateCol date, uid VARCHAR(20),PRIMARY KEY(udatecol,uid));
insert into raw values
('20010101','AAPL'),
('20010102','MSFT'),
('20010103','INFY'),
('20010104','HOG');
insert into universe values
('20010101','AAPL'),
('20010102','GOOGL'),
('20010103','INFY'),
('20010105','HOG');
注意:我对每种情况下的主键都做了假设。如果这是不正确的,请澄清
给定这个数据集,期望的结果应该是什么样的?回答之前先考虑。在什么情况下原始计数不是1?@草莓如果原始表中没有特定日期的日期,则应该是10@Strawberry不明白你想说什么?这个平台只供专家使用吗???它不会给出所需的结果result@ggupta很明显,因为你没有解释properly@Strawberry-好的,我想得到原始表中每个日期的计数,以及宇宙表中在同一日期匹配的计数。希望这是清楚的now@ggupta不。撰稿人不应该通过浏览评论来了解发生了什么。编辑你的问题。@ggupta如果这个答案回答了这个问题,那么这个问题仍然不清楚。