I have a table with values:
CREATE TABLE IF NOT EXISTS `games` (
`date` DATE,
`item_id` varchar(40),
`player_id` varchar(40)
);
INSERT INTO `games` (`date`, `item_id`, `player_id`) VALUES
('2023-01-03', 'raven', 'david'),
('2023-01-04', 'folly', 'david'),
('2023-01-05', 'syd', 'david'),
('2023-01-05', 'syd', 'ire'),
('2023-01-01', 'raven', 'jane'),
('2023-01-03', 'syd', 'jane'),
('2023-01-03', 'folly', 'harry'),
('2023-01-10', 'syd', 'harry'),
('2023-01-10', 'syd', 'yvette')
;
However, these two queries return different results:
SELECT
g.date,
g.item_id,
COUNT(*) AS item_games,
SUM(1) OVER (PARTITION BY g.date) AS total_matches
FROM games g
GROUP BY g.date, g.item_id
ORDER BY g.date, g.item_id;
returns:
2023-01-01 raven 1 1
2023-01-03 folly 1 3
2023-01-03 raven 1 3
2023-01-03 syd 1 3
2023-01-04 folly 1 1
2023-01-05 syd 2 1
2023-01-10 syd 2 1
while
SELECT
g.date,
g.item_id,
COUNT(*) AS item_games,
SUM(count(*)) OVER (PARTITION BY g.date) AS item_game_ratio
FROM games g
GROUP BY g.date, g.item_id
ORDER BY g.date, g.item_id;
returns:
2023-01-01 raven 1 1
2023-01-03 folly 1 3
2023-01-03 raven 1 3
2023-01-03 syd 1 3
2023-01-04 folly 1 1
2023-01-05 syd 2 2
2023-01-10 syd 2 2
I don't understand why they only return different values for the last two rows.