首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据id的视图获取id最常用的类型。

根据id的视图获取id最常用的类型。
EN

Stack Overflow用户
提问于 2019-01-28 18:12:21
回答 2查看 22关注 0票数 0

我正在尝试从我的SQL中提取浏览量最大的类型,我很新,所以我不确定使用哪种逻辑,排名,计数和/或总和。

所以我有三列: ID、seller_type和view_count

代码语言:javascript
复制
+----+-------------+------------+--------+-------+
| ID | Seller_type | view_count |  Week  |  Day  |
+----+-------------+------------+--------+-------+
| 33 | Vendor      |         54 | Week1  | Day 1 |
| 33 | Vendor      |         45 | Week1  | Day 2 |
| 33 | Marketplace |         68 | Week2  | Day 4 |
| 33 | Marketplace |         12 | Week2  | Day 2 |
| 32 | Vendor      |         93 | Week2  | Day 3 |
| 33 | Third-party |         74 | Week1  | Day 6 |
| 32 | Third-party |         10 | Week1  | Day 1 |
+----+-------------+------------+--------+-------+

基本上我有一个表,其中有一个ID,一个卖家类型和一个id的视图数量。一个唯一ID可以有多个具有相同卖家的行(因为它们可以是不同的周/天)。例如,我想要做的是,计算在第一周内ID 33的浏览量最多的seller_type。在这种情况下,供应商(54+45),而不是市场(12)。

所以我的计划是开始使用SUM:

代码语言:javascript
复制
WITH A AS (
SELECT
ID
,Seller_type
,SUM(view_count) as Total_views
,Week

FROM Table_A

GROUP BY
ID
,Seller_type
,Week
)

SELECT
CASE WHEN Week = 'Week1' THEN MAX(Total_views)
CASE WHEN Week = 'Week2' THEN

FROM A

因此,我有了子查询A中每个ID的每个卖家的总数,并且我想在主查询中使用一个大小写来指示选择最大total_views的卖家类型。但我不知道该怎么写我的案例。

如有任何意见/建议,我们将不胜感激!

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-28 19:53:24

您似乎基本上想要聚合:

代码语言:javascript
复制
select seller_type, week, sum(view_count)
from t
group by seller_type, week;

然后你需要一些过滤,并选择最上面的一个:

代码语言:javascript
复制
select seller_type, week, sum(view_count)
from table_a
where week = 'Week 1'
group by seller_type, week
order by sum(view_count)
fetch first 1 row only;

注意,并不是所有的数据库都支持标准的fetch first子句--但在某种程度上(比如使用select toplimit),所有的数据库都支持该功能。

票数 0
EN

Stack Overflow用户

发布于 2019-01-28 18:37:13

如果我做对了,你想得到每周浏览量最多的卖家类型。为此,您可以使用rank()row_number()。使用rank(),如果有多个记录具有相同的顶视图计数,您将获得所有顶级记录。在这种情况下,将rank()替换为row_count()可仅(随机)选择其中一条记录。

代码语言:javascript
复制
WITH
a
...
SELECT id,
       seller_type,
       total_views,
       week
       FROM (SELECT id,
                    seller_type,
                    total_views,
                    week
                    rank() OVER (PARTITION BY week
                                 ORDER BY total_views DESC) r
                    FROM a)
       WHERE r = 1;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54399680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档