mysql 分别针对每个不同的列选择聚合

nhaq1z21  于 2022-12-17  发布在  Mysql
关注(0)|答案(1)|浏览(104)

我想选择每个唯一的标题,沿着相关的链接。我想选择与标题相关的总和(价格)和与每条记录中的链接相关的总和(价格)。这是我的表结构:
| 标题|链接|价格|
| - ------|- ------|- ------|
| 一个|1个|五个|
| 一个|1个|十个|
| B|第二章|十五|
| (c)秘书长的报告|第二章|二十个|
预期产出:
| 链接|标题|标题_价格|链接_价格|
| - ------|- ------|- ------|- ------|
| 1个|一个|十五|十五|
| 第二章|B|十五|三十五|
| 第二章|(c)秘书长的报告|二十个|三十五|
下面是我的尝试:

"SELECT link as link, title, sum(price) FROM `test` group by link,title"

这是尝试,以选择关于标题的总和,但我也想选择关于链接也在每一行的总和。所以我使用以下查询,但它给出错误:

SELECT t1.link as link, title, sum(price) as title_price,
(select link_price from(
(select link, sum(price) as link_price from `test` group by link where link=t1.link)
))
as price
FROM `test` as t1 group by link,title
ghhaqwfi

ghhaqwfi1#

您可以使用总和聚合函数来查找每个标题、链接组的总和,然后使用总和窗口函数来查找每个链接组的总和。

SELECT link, title, sum_per_link_title AS title_price,
  SUM(sum_per_link_title) OVER (PARTITION BY link) AS link_price
FROM
(
  SELECT title, link, SUM(price) AS sum_per_link_title
  FROM test
  GROUP BY title, link
) T
ORDER BY link, title

参见demo

相关问题