如何在SQL中创建前5名和后5名列?

哈姆扎·哈立德

我有一张包含渠道收入的表格(跨越多个日期)。我想按渠道对表格进行分组,并在单独的列中将排名靠前的2个渠道排为('Top 2')。底部2个通道在同一列中为(“底部2”)。

我的代码:

SELECT
  channel,
  SUM(`gross_revenue_usd`) as sum_gross_revenue
FROM table
GROUP BY channel
ORDER BY SUM(`gross_revenue_usd`) DESC

我命令正确。但是我不明白如何制作一个新列来标记前2个和后2个通道。

它应该是这样的:

我也附上照片

输出图片

任何人都可以指导我该怎么做。我需要这个新列来在我使用的可视化工具中创建过滤器。

霍根

您可以使用开窗函数和case语句来执行以下操作:

SELECT channel, sum_gross_revenue,
       CASE 
         WHEN ASCORD <= 2 THEN 'BOTTOM 2' 
         WHEN DESCORD <= 2 THEN 'TOP 2'
         ELSE ''
       END AS Ranking
FROM (
  SELECT channel, sum_gross_revenue,
         ROW_NUMBER() OVER (ORDER BY SUM_GROSS_REVENUE ASC) AS ASCORD,
         ROW_NUMBER() OVER (ORDER BY SUM_GROSS_REVENUE DESC) AS DESCORD
  FROM (
    SELECT
      channel,
      SUM(`gross_revenue_usd`) as sum_gross_revenue
    FROM table
    GROUP BY channel
  ) A
) B
ORDER BY SUM(`gross_revenue_usd`) DESC

注意:我使用了2个子查询来使它更清晰-只能用一个子查询来编写。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将我的前 5 名工资和后 5 名合并显示在 Oracle 中?

如何在python的同一张图上按升序绘制压缩列表的前5名和后5名?

如何使用连接在同一个查询中显示前 5 名和后 5 名?

如何在此sql查询中获取前5名食物

如何选择20行后的前5名

如何从数据框中获取列表中的前 5 名

如何从同一列中的两个不同日期输出前 5 名?

评估和计算前N名的准确性:前1名和前5名

如何在sql中显示前3名业务?

如何在teradata sql中创建动态表名

如何在R中创建包含文件名的列

(类别列中的项目顺序不正确)编写 SQL 查询以生成前 5 个类别的排名列表

如何计算/显示数字为“前 5 名”、“前 10 名”、“前 15 名”等?

如何在姓名和姓氏列中插入全名列

如何在Bootstrap 3中创建5个相等的列?

如何从iTunes获取前400名列表

使用Entity Framework获取每个类别和子类别中的前5名产品

如何在10行和5列中显示奇数?

如何从表中删除除前5名以外的所有记录

如何从数据库中选择的前10名小肠更新前5名小肠

按多维数组中的值排序(前5名)

如何在JavaScript中的对象的对象中获取前5个值和前5个值?

我如何从表mysql中获取前5条和后1条记录?

Skimr:如何获取前3名和后3名值?

如何在Rails 5中创建API?

如何在Linux中连续创建带有特殊字符(如()和空格)的文件名?

SSRS在多个地区名列前20名

如何在PyQt5应用程序中从Matplotlib NavigationToolbar更改默认文件名?

如何在SQL中的for循环内创建动态变量名