gpt4 book ai didi

mysql - 按类别 SQL 查询的相对频率

转载 作者:行者123 更新时间:2023-11-29 13:43:06 24 4
gpt4 key购买 nike

我有一个包含以下列的表格:日期、类别、 View

我想编写一个查询来提供以下输出:

年、季度、类别、“按季度划分的类别浏览量的相对百分比”

例如:

2013, Q1, blue, 0.15
2013, Q1, yellow, 0.05
2013, Q1, green, 0.80
2013, Q2, blue, 0.20
2013, Q2, yellow, 0.05
2013, Q2, green, 0.75
2013, Q3, blue, 0.10
2013, Q3, yellow, 0.15
2013, Q3, green, 0.65

请注意,对于每个季度,该组类别中的相对频率加起来为 1。

仅使用 SQL 动态处理的状态是否太多(我使用的是 MySQL)?

这就是我到目前为止所拥有的。

这几乎是我想要的,除了所有季度的相对频率输出总和为 1。

SET @total_views = SELECT sum(views) FROM daily_views_by_category;

SELECT
year(dt),
quarter(dt),
category,
sum(views)/@total_views AS category_views
FROM
daily_views_by_category
GROUP BY
year(dt), quarter(dt), category
ORDER BY
year(dt), quarter(dt), category
;

最佳答案

您想使用join而不是变量来完成此操作。这个想法是按年季度目录和年季度汇总数据,然后将结果连接在一起进行算术:

SELECT yqc.yr, yqc.qt, category,
(yqc.views / yq.views) as category_views
FROM (select year(dt) as yr, quarter(dt) as qt, category, sum(views) as views
from daily_views_by_category vbc
group by year(dt), quarter(dt), category
) yqc join
(select year(dt) as yr, quarter(dt) as qt, sum(views) as views
from daily_views_by_category vbc
group by year(dt), quarter(dt)
) yq
on yqc.yr = yq.yr and yqc.qt = yq.qt
ORDER BY 1, 2, 3;

关于mysql - 按类别 SQL 查询的相对频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17822151/

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