我有类似以下示例的交易数据:

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中拥有它是一个很大的进步。

提前致谢。

最佳答案

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;


fiddle

关于mysql - 组内的SQL组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59684895/

10-09 07:34