首页 > 解决方案 > 组内的 SQL 组

问题描述

我有像这个例子这样的交易数据:

Name    | Price
George  | 20
George  | 20
George  | 20
George  | 30
Paul    | 20
Paul    | 20
Paul    | 30
Paul    | 30
Paul    | 35

我需要按用户分组并按一般交易数量排序,但在该组用户中,还按该价格的交易量按价格排序分组。我需要这个结果:

Name    | Price | Count
Paul    | 20    | 2
Paul    | 30    | 2
Paul    | 35    | 1
George  | 20    | 3
George  | 30    | 1

更新

它位于 MySQL 5.5 数据库中。我需要在 Laravel 中进行流利的查询,但是在 SQL 中使用它是一个很大的进步。

提前致谢。

标签: mysqlsqlgroup-by

解决方案


SELECT t1.*
FROM ( SELECT name, 
              price, 
              COUNT(*) cnt
       FROM srctable
       GROUP BY name, price ) t1
JOIN ( SELECT name, 
              COUNT(*) tcnt
       FROM srctable
       GROUP BY name ) t2 USING (name)
ORDER BY tcnt DESC, 
         cnt DESC;

小提琴


推荐阅读