gpt4 book ai didi

sql - 数据透视表的有效方法

转载 作者:行者123 更新时间:2023-12-04 17:24:18 25 4
gpt4 key购买 nike

我有一个名为monthly_agg 的表,其中包含每月汇总的数据。

+------------+-----+----------+-----------+---------------+--------------+-------------+----------+---------+
| yyyy_mm_dd | id | app | ex_status | active_status | active_count | active_base | ex_count | ex_base |
+------------+-----+----------+-----------+---------------+--------------+-------------+----------+---------+
| 2019-01-31 | 123 | content | impl | impl | 390 | 321 | 344 | 340 |
+------------+-----+----------+-----------+---------------+--------------+-------------+----------+---------+
| 2019-01-31 | 333 | messages | impl | impl | 541 | 210 | 788 | 610 |
+------------+-----+----------+-----------+---------------+--------------+-------------+----------+---------+
| 2019-01-31 | 832 | photos | no | no | null | 430 | null | 100 |
+------------+-----+----------+-----------+---------------+--------------+-------------+----------+---------+

我想让每个应用程序,成为一个专栏。每个应用程序列应包含一个百分比,计算如下:
SELECT 
yyyy_mm_dd,
id,
App,
SUM(CASE
WHEN (app = ‘content’ AND ex_status = ‘impl’) THEN ex_count/ex_base
WHEN (active_status = 'impl') THEN active_count/active_base
END) AS percentage
FROM
monthly_agg

我需要每个 app value 为一列,然后该列的值是上述计算的结果。我怎么能这样旋转 table ?理想情况下,我的输出如下所示:
+------------+-----+--------------------+---------------------+
| yyyy_mm_dd | id | content_percentage | messages_percentage |
+------------+-----+--------------------+---------------------+
| 2019-01-31 | 123 | 1.2 | null |
+------------+-----+--------------------+---------------------+
| 2019-01-31 | 333 | null | 2.57 |
+------------+-----+--------------------+---------------------+

我有大约 20 个应用程序,所以动态会很棒。

最佳答案

IIUC 你可以试试:

SELECT 
yyyy_mm_dd,
id,
SUM(CASE WHEN (app = 'content' AND ex_status = 'impl') THEN ex_count/ex_base
WHEN (app = 'content' and active_status = 'impl') THEN active_count/active_base ELSE 0 END) AS content_percentage,
SUM(CASE WHEN (app = 'messages' and active_status = 'impl') THEN active_count/active_base ELSE 0 END) AS messages_percentage
FROM
monthly_agg
GROUP BY
yyyy_mm_dd, id

关于sql - 数据透视表的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59323597/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com