我有一个带有列的表:date, category, views
。
我想写一个查询,给我以下输出:
year, quarter, category, "relative percentage of category views by quarter"
例如:
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
;