我正在尝试将一个表中一个值的总COUNT
与另一个表中的总COUNT
进行比较,我只是不确定如何正确执行。
如果SalesID
表中的COUNT
总total_sales
高于fid
表中的COUNT
总total_leads
,那么我想输出这些价值观。
表格:
CREATE TABLE total_leads
(`uid` int, `tstamp` int, `fid` int, `phone` varchar(2))
;
INSERT INTO total_leads
(`uid`, `tstamp`, `fid`, `phone`)
VALUES
(1, 1299795364, 1525, '""'),
(1, 1309854563, 4031, '""'),
(1, 1309854562, 3134, '""'),
(5, 1280752536, 18, '""'),
(5, 1280942244, 219, '""'),
(5, 1309862562, 1234, '""'),
(5, 1480752536, 184, '""'),
(5, 1520942244, 119, '""')
;
CREATE TABLE total_sales
(`UserID` int, `SalesID` int, `Time` varchar(8))
;
INSERT INTO total_sales
(`UserID`, `SalesID`, `Time`)
VALUES
(1, 172, '12:57:43'),
(1, 3563, '15:59:49'),
(1, 9508, '01:46:47'),
(5, 18935, '07:26:07'),
(5, 19378, '08:06:41'),
(1, 144, '11:52:41'),
(1, 9248, '02:43:40'),
(1, 3423, '14:54:45'),
(5, 11935, '03:21:06'),
(1, 1448, '05:02:24')
;
MySQL命令:
SELECT x.uid, COUNT(*), COUNT(DISTINCT x.fid)
FROM total_leads AS x
WHERE x.uid BETWEEN 1 AND 5
GROUP BY x.uid;
SELECT ud.UserId, COUNT(*), COUNT(DISTINCT ud.SalesID)
FROM total_sales AS ud
WHERE ud.UserId BETWEEN 1 AND 5
GROUP BY ud.UserID;
返回(总线索,总销售额):
uid COUNT(*) COUNT(DISTINCT x.fid)
1 3 3
5 5 5
UserId COUNT(*) COUNT(DISTINCT ud.SalesID)
1 7 7
5 3 3
所以我希望得到这样的结果:
UserId Sales Leads Dif
1 7 3 4
即使只知道哪个UserID
拥有Sales
> fid
也是完全可以的:
UserId COUNT(*) COUNT(DISTINCT ud.SalesID)
1 7 7
我尝试了几件事,例如UNION
,但这只是将所有值合并在一起。
答案 0 :(得分:2)
使用子查询联接
select uid,leadcount,salescount,salescount-leadcount as diff from
(
SELECT x.uid, COUNT(*) leadcount, COUNT(DISTINCT x.fid)
FROM total_leads AS x
WHERE x.uid BETWEEN 1 AND 5
GROUP BY x.uid
) t1 left join
(
SELECT ud.UserId, COUNT(*) salescount, COUNT(DISTINCT ud.SalesID)
FROM total_sales AS ud
WHERE ud.UserId BETWEEN 1 AND 5
GROUP BY ud.UserID
) t2 on t1.uid=t2.UserId
答案 1 :(得分:2)
尝试此代码,
document.getElementById('pre_map').innerHTML = "<div id='mapid' style='width: relative; height: 500px;'></div>";
答案 2 :(得分:0)
您可以使用以下方法执行此操作,在这里您可以比较每个表的总数
select t1.uid,t2.sales_count,t1.leads_count,
case when t1.leads_count > t2.sales_count then t1.leads_count -t2.sales_count
else t2.sales_count -t1.leads_count
end as diff
from
(
select uid,count(fid) as leads_count
from total_leads
group by uid
)t1
inner join
(
select UserID,count(SalesID)as sales_count
from total_sales
group by UserID
)t2 on t1.uid = t2.userid ;