看,要汇总
WINNERS
的总数和胜利,并查找和汇总了
WAGERS
.。我认为我很亲密,但是当汇总时这些重复是重复的
有2个表...有很多一对多的关系。
还有其他列,最不相关,但是两个表中都有一个TICKET
该值在每个表中都是唯一的,但可以在两个表中
如果a
TICKET
在WINNERS
WAGERS
表中
TICKET
表中的a可能不在
WAGERS
表中
我无法创建其他表或更改当前表结构。
tables -WINNERS
::
-location
Id
DrawWINNERS
113 | 648-982 | 3/10/2025 | ||
---|---|---|---|---|
113 | 648-982 | 3/10/2025 | game1 | |
113 | 648-982 | 3/10/2025 | game1 | |
113 | 648-982 | 3/10/2025 | game1 | |
113 | 648-982 | 3/10/2025 | game1 | |
: |
Id
Draw113 | 648-982 | 3/10/2025 | ||
---|---|---|---|---|
113 | 648-982 | 3/10/2025 | game1 | |
113 | 648-982 | 3/10/2025 | game1 | |
113 | 648-982 | 3/10/2025 | game1 | |
113 | 648-982 | 3/10/2025 | game1 | |
113 | 648-982 | 3/10/2025 | game1 | |
为此结果看: |
Draw
WAGERS
DISTINCT
-locationWager_Amount | win_amount | 113 | 648-982 | 3/10/2025 | game1 | ||
---|---|---|---|---|---|---|---|
5 | 24 | 但根据 | , | 类型等,请继续对此进行变化。 |
Draw
gameWAGER_COUNT
GROUP BY
JOIN | WINS | cs.wager | 任何帮助将不胜感激。 |
这样做的规范方法是在单独的子征服中执行聚合,然后将子征服加在一起。 假设每个位置/id/draw/游戏组合(如果出现在一个表中)也会出现在另一个表中,我们可以尝试:
SELECT DISTINCT
cs.LOCATION, cs.ID, cs.Draw, cs.Game,
COUNT(cs.Ticket) AS wager_count,
CASE
WHEN (cs.wager IS NOT NULL)
THEN SUM(CAST(cs.Wager/100 AS decimal(9, 2)))
END AS wager_amount,
COUNT(cw.Ticket) AS win_count,
SUM(CAST(cw.Prize/100 AS decimal(9, 2))) AS win_amount
FROM
Sales cs
INNER JOIN
winners cw ON cw.ID = cs.ID
AND cw.Draw = cs.Draw
AND cw.Game = cs.Game
WHERE
EXISTS --cs.ID IN (SELECT ID, Draw, Game FROM Winners WHERE cw.Draw >= DATEADD(day, -8, GETDATE()) )
GROUP BY
cs.Location, cs.ID, cs.Draw, cs.Game, cs.wager
ORDER BY
cs.Location, cs.ID, cs.Draw, cs.Game