当前位置: 首页 > 知识库问答 >
问题:

如何确定组中计数最高的类别?

吴凯
2023-03-14
select substr(shopabb, 1, 4) as shopgroup, count(*)
from table
where shopabb like'h%'
group by substr(shoppabb, 1, 4)
order by count(*) DESC;

我正在按子字符串组计算表中所有的商店缩写。我有另一个名为city的专栏,显示了商店缩写的位置。现在,我还想选择/显示子字符串组最常出现的城市,如果可能,还想显示该城市的shopabb计数。结果应该是这样的:

    shopabb   Count(*)   City      Count_City
    -----------------------------------------
   hel         50         London    40
   heal        20         Berlin    15   
   hot         10         Rome       8

谢谢!

共有1个答案

徐安康
2023-03-14

使用row_number()进行两个级别的聚合:

select shopgroup, sum(cnt) as total_count, 
       max(case when seqnum = 1 then city end) as city_with_max,
       max(case when seqnum = 1 then cnt end) as cnt_at_max
from (select substr(shopabb, 1, 4) as shopgroup, city, count(*) as cnt,
             row_number() over (partition by substr(shopabb, 1, 4) order by count(*) desc) as seqnum
      from table
      where shopabb like'h%'
      group by substr(shopabb, 1, 4), city
     ) t
group by shopgroup
order by sum(cnt) DESC;

这是一个数据库

编辑:

你可以在没有窗口功能的情况下做到这一点,但是它要麻烦得多:

select substr(shopabb, 1, 4) as shopgroup, city, count(*) as cnt
from table t
where shopabb like'h%'
group by substr(shoppabb, 1, 4), city
having count(*) = (select count(*)
                   from table t2
                   where substr(t2.shopabb, 1, 4) = substr(t.shopabb, 1, 4)
                   group by city
                   order by count(*) desc
                   limit 1
                  );

请注意,如果两个城市并列为最大值,这将返回重复。它需要一点更多的工作来获得总的总数。

 类似资料:
  • 请帮助我,我已经有一个代码,它运行完美,但问题是我需要确定每行的最高和最低。我不知道如何开始,请帮助我,也请向我解释。这是代码:

  • 问题内容: 运行前三行会发出; 如何得到 ???要长吗?我可以解析该字符串,然后执行Class.forname(),但这很糟糕。简单的方法是什么? 问题答案: 写就好了 从JavaDoc: 返回表示数组的组件类型的信息。如果此类不表示数组类,则此方法返回。

  • 问题内容: 可以固定桌子上一行的高度(tr)吗? 当我缩小浏览器窗口时,会出现问题,一些行开始播放,而我无法确定行的高度。 我尝试了几种方法: 我正在使用IE7 样式 HTML代码。 问题答案: 当涉及固定高度和不换行文本时,表格很难(至少在IE中如此)。我认为您会发现唯一的解决方案是将文本放入元素中,如下所示: 这样,的高度就是包含单元格的高度,并且文本无法增长,无论窗口大小如何,单元格/行都必

  • 问题内容: 我当前正在编写一个程序,其中用户必须输入10个数字,然后输出将是最高数字和最低数字。我的代码有问题,但找不到。 问题答案: 以不同的方式初始化值: 如果将它们都初始化为零,则永远不会有小于零的“最高”值或大于零的“最低”值

  • 问题内容: 只要我有键值对,解组就非常简单了,但是我将如何以不同的顺序解组不同类型的数组呢?单个元素定义明确且已知,但顺序不明确。 我无法提出一个漂亮的解决方案。 我会尝试对所有元素进行错误处理吗?是否有某种工会类型可以为我做到这一点? 游乐场版 问题答案: Go官方博客上有一篇不错的文章:JSON和GO。可以将“任意数据解码”到接口{}中,并使用类型断言来动态确定类型。 您的代码可能可以修改为:

  • 问题内容: 我需要确定JavaScript中的数组中是否已存在对象。 例如(dummycode): 现在,“carBrands”数组包含所有实例。我现在正在寻找一种快速解决方案,以检查car1,car2,car3或car4的实例是否已经在carBrands数组中。 例如: car1和car4包含相同的数据,但是不同的实例,应测试它们是否相等。 我是否在创建时向对象添加了哈希值?还是有更快的方法来用