내 스키마에 5 개의 테이블이 있습니다.count 및 sum 열이있는 네 개의 mysql 테이블과 where 절
먼저 opn
입니다 :
| opnID | submitID | emailID | opnDate | invalidOPN |
+-------+----------+---------+---------------------+------------+
| 1 | 6 | 1 | 2014-10-15 11:45:50 | 2 |
| 2 | 6 | 2 | 2014-10-15 11:55:52 | 0 |
| 3 | 6 | 3 | 2014-10-15 12:41:52 | 10 |
| 4 | 7 | 2 | 2014-10-15 17:45:22 | 1 |
| 5 | 7 | 3 | 2014-10-16 00:45:55 | 5 |
| 6 | 6 | 5 | 2014-10-16 01:45:11 | 0 |
나는 또한이 clk
:
| clkID| submitID | emailID | clkDate | invalidCLK |
+-------+----------+---------+---------------------+------------+
| 1 | 6 | 1 | 2014-10-15 11:45:55 | 1 |
| 2 | 6 | 2 | 2014-10-15 11:55:59 | 0 |
| 3 | 6 | 3 | 2014-10-15 12:42:52 | 5 |
| 4 | 7 | 3 | 2014-10-15 17:46:12 | 0 |
| 5 | 6 | 5 | 2014-10-16 00:46:55 | 0 |
users
테이블 :
| userID | firstName | secondName |
+--------+-----------+------------+
| 1 | john | smith |
| 1 | susan | bella |
submission
테이블 :
| submitID | userID |
+----------+--------+
| 6 | 1 |
| 7 | 2 |
클릭 수와 각 사용자에 대한 invalidclk 및 invalidopn의 합계를 얻으려면 open 및 count clk.submitID 수를 얻으려면 opn.submitID를 계산해야합니다. 여기
내 예상 결과입니다 : 그 두 개의 쿼리를 시도| userID | fName | sName | numberOfOpen | SUM(opn.invalidOPN) | numberOfClicks | SUM(clk.invalidCLK) |
+--------+-------+-------+--------------+---------------------+----------------+---------------------+
| 1 | john | smith | 4 | 12 | 4 | 6 |
| 2 | susan | bella | 2 | 6 | 1 | 0 |
하지만 난
SELECT users.userID, users.FirstName, users.SecondName, count(opn.submitID) as "Number of Opens", sum(opn.InvalidOPN) as "Number of invalid Opens"
FROM users
RIGHT JOIN (submission INNER JOIN opn ON opn.submitID = submission.submitID and OPNDate between "2013-10-01 00:00:00" AND "2014-10-31 23:59:59") ON submission.UserID = users.UserID group by users.userID
UNION
SELECT users.userID, users.FirstName, users.SecondName, count(clk.submitID) as "Number of clicks", sum(clk.InvalidCLK) as "Number of invalid clicks"
FROM users
RIGHT JOIN (submission INNER JOIN clk ON clk.submitID = submission.submitID and CLKDate between "2013-10-01 00:00:00" AND "2014-10-31 23:59:59") ON submission.UserID = users.UserID group by users.userID
SELECT users.userID, users.FirstName, users.SecondName, count(opn.submitID) as "Number of Opens", sum(opn.InvalidOPN) as "Number of invalid Opens", count(clk.submitID) as "Number of clicks", sum(clk.InvalidCLK) as "Number of invalid clicks"
FROM users, submission, clk, opn
where opn.submitID = submission.submitID and clk.submitID = submission.submitID
And CLKDate between "2013-10-01 00:00:00" AND "2014-10-31 23:59:59"
AND submission.UserID = users.UserID group by users.userID
을 필요로하는 결과에 도달하지 도와 주시고 내가 무엇이 필요한지 보여주십시오.
우연한 만회. 좋은. – Strawberry