Я пытаюсь сравнить общее 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;
Возвращает (total_leads, total_sales):
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
, но это просто объединило все значения вместе.