COUNT
テーブル内の 1 つの値の合計を別の値の合計と比較しようとして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
たが、すべての値がマージされただけです。