如何将每行的类别数收集到一行并计算每个类别
Posted
技术标签:
【中文标题】如何将每行的类别数收集到一行并计算每个类别【英文标题】:how to gather number of categories of each row to one row and count each one of the categories 【发布时间】:2021-10-10 07:33:46 【问题描述】:我想知道如何从 2 行组成每个类别的 1 行并计算每个类别
例如桌衣:
clothes1 | clothes2 |
---|---|
shirt | pants |
shirt | Null |
dress | shirt |
Socks | pants |
我需要一个看起来像这样的查询。(没有新表可以吗?)。结果应该是这样的:
clothes | count |
---|---|
shirt | 50 |
socks | 30 |
pants | 20 |
dress | 10 |
我需要在(分区)上使用 row_number() 还是可以以某种方式使用 group by?还是有其他方法?而且我还需要显示前 3 名。
谢谢!
【问题讨论】:
请标记单个 RDBMS,因为 mysql SQL Server。 你是怎么得到count列的? D-Shih 我需要将每个类别的所有列一起计算(我有 5 列衣服,但这里我举了 2 列的示例) 【参考方案1】:取两列的并集,然后聚合:
SELECT clothes, COUNT(*) AS count
FROM
(
SELECT clothes1 AS clothes FROM clothes
UNION ALL
SELECT clothes2 FROM clothes
) t
GROUP BY clothes;
【讨论】:
我不需要计算所有东西,只需要计算衣服 1 和衣服 2(我还有另一个列,如 id、brand 等)。 t是什么? @d12t
是别名。自从我最初回答以来,您已经编辑了您的问题。以上是关于如何将每行的类别数收集到一行并计算每个类别的主要内容,如果未能解决你的问题,请参考以下文章