, , . , :
? , ?
. OLTP.
?
( ORDER BY ). Vote, :
SELECT V.TrackHash, SUM(V.Vote) AS VotesTotal
FROM Vote V
WHERE V.CreatedAt > NOW() - INTERVAL 1 MONTH AND V.Vote = 'up'
GROUP BY V.TrackHash
2 , TrackHash CreatedAt, Vote Type ( 3 , ). 200 . - , .
- , ?
, , . 3 .
1. ( )
, , . , , , , . , (- ), . .
2. OLAP
, :
CREATE TABLE VoteArchive
( TrackHash CHAR(40) NOT NULL,
CreatedDate DATE NOT NULL,
AppMadeUpVotes INT NOT NULL,
AppMadeDownVotes INT NOT NULL,
ImportedUpVotes INT NOT NULL,
ImportedDownVotes INT NOT NULL,
MergedUpVotes INT NOT NULL,
MergedDownVotes INT NOT NULL,
PRIMARY KEY (CreatedDate, TrackHash)
);
,
INSERT VoteArchive
SELECT TrackHash,
DATE(CreatedAt),
COUNT(CASE WHEN Vote = 'Up' AND Type = 0 THEN 1 END),
COUNT(CASE WHEN Vote = 'Down' AND Type = 0 THEN 1 END),
COUNT(CASE WHEN Vote = 'Up' AND Type = 1 THEN 1 END),
COUNT(CASE WHEN Vote = 'Down' AND Type = 1 THEN 1 END),
COUNT(CASE WHEN Vote = 'Up' AND Type = 2 THEN 1 END),
COUNT(CASE WHEN Vote = 'Down' AND Type = 2 THEN 1 END)
FROM Votes
WHERE CreatedAt > DATE(CURRENT_TIMESTAMP)
GROUP BY TrackHash, DATE(CreatedAt);
. , , , , . , , , . . , .
3.
, . , , "" , , , . /, , , , ( ).
4.
2 , , , 2, , . , , . , , - .