首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql中的RowNum,带有group by (MySQL 5.x)

Mysql中的RowNum,带有group by (MySQL 5.x)
EN

Stack Overflow用户
提问于 2019-12-14 05:14:37
回答 2查看 71关注 0票数 0

我想在MySql中做一个rownum,但使用的是group by。因此,当de column城市发生变化时,rownum需要重新启动。

我试过了:

代码语言:javascript
复制
> select city, category_name, sales,    @row_number:=CASE WHEN
> @db_names=sub_table.city THEN @row_number+1 ELSE 1 END AS row_number
> from ( SELECT city, category_name, sum(subtotal) as sales from
> customers     join orders on customers.customer_id = orders.customer_id
>     join order_items on orders.order_id = order_items.order_id
>     join products on order_items.product_id = products.product_id
>     join categories on products.category_id = categories.category_id
>     group by city, category_name
>     ) sub_table ORDER BY sub_table.city ASC, sub_table.sales DESC;

但我得到的结果是:

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-12-14 05:40:49

你非常接近,只是变量@db_name没有赋值:

代码语言:javascript
复制
select city, category_name, sales,    
  @row_number:=CASE WHEN
    @db_names=sub_table.city THEN @row_number+1 ELSE 1 END AS row_number,
  @db_name:=sub_table.city
from ( SELECT city, category_name, sum(subtotal) as sales from
customers     join orders on customers.customer_id = orders.customer_id
    join order_items on orders.order_id = order_items.order_id
    join products on order_items.product_id = products.product_id
    join categories on products.category_id = categories.category_id
    group by city, category_name
) sub_table ORDER BY sub_table.city ASC, sub_table.sales DESC;
票数 1
EN

Stack Overflow用户

发布于 2019-12-14 07:40:23

我编写了它,就像我在SO上进行的其他查询一样。

您还应该对表使用别名。

代码语言:javascript
复制
 SELECT 
    `city`,
    `category_name`,
    `sales`
     ,IF(@db_names = city , @row_number:= @row_number + 1  , @row_number:= 1 ) AS row1_number
     ,@db_names := city
FROM
    (SELECT 
        city, category_name, SUM(subtotal) AS sales
    FROM
        customers
    JOIN orders ON customers.customer_id = orders.customer_id
    JOIN order_items ON orders.order_id = order_items.order_id
    JOIN products ON order_items.product_id = products.product_id
    JOIN categories ON products.category_id = categories.category_id
    GROUP BY city , category_name
    ORDER BY city , category_name) sub_table
    ,(SELECT @dab_names := '') c1,(SELECT @row_number := 0) d1
ORDER BY sub_table.city ASC , sub_table.sales DESC;

如果没有一个样本来正确地测试它,那么

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59329889

复制
相关文章

相似问题

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