SQL 计算基于字段类型并按类型分组



数据库包括FamID,TicketType和Amt我想计算每个家庭每种票种的总金额,并根据所有票证类型的总数按家庭高到低排序。

数据库值为:

FamID           TicketType             Amt
1                1                     10
1                1                     10
1                2                     20
1                3                     30
2                2                     20
2                1                     10
2                1                     10
2                1                     10
2                3                     30
3                3                     30
3                3                     30
3                3                     30

希望结果是

Family         Type 1         Type 2        Type 3         Total
3                0               0             90            90
2                30              20            30            80
1                20              20            30            70

我是不是想做得太多了?

您从未指定过 RDBMS,但以下透视查询应该适用于大多数主要查询,只需稍作修改:

SELECT t.`Type 1`, t.`Type 2`, t.`Type 3`,
    (t.`Type 1` + t.`Type 2` + 2*t.`Type 3`) AS Total
FROM
(
    SELECT FamID AS Family,
        SUM(CASE WHEN TicketType = 1 THEN Amt ELSE 0 END) AS `Type 1`,
        SUM(CASE WHEN TicketType = 2 THEN Amt ELSE 0 END) AS `Type 2`,
        SUM(CASE WHEN TicketType = 3 THEN Amt ELSE 0 END) AS `Type 3`,
    FROM Tickets
    GROUP BY FamID
) t
ORDER BY t.Total DESC

相关内容

  • 没有找到相关文章

最新更新