Ste*_*ran 6 mysql group-by count
我有一张桌子:
gold_2012
gold_city | gold_type | gold_cost | gold_selltime
--------------------------------------------------
city1 | type 1 | 41.23 | 2012-01-01
city1 | type 1 | 42.23 | 2012-02-02
city1 | type 1 | 40.23 | 2012-03-03
city2 | type 2 | 43.23 | 2012-01-01
city2 | type 2 | 45.23 | 2012-02-02
city2 | type 2 | 47.23 | 2012-03-03
city3 | type 3 | 48.23 | 2012-01-01
city3 | type 3 | 49.23 | 2012-02-02
city3 | type 3 | 44.23 | 2012-03-03
Run Code Online (Sandbox Code Playgroud)
我怎样才能得到由1个最后的结果顺序gold_selltime降序各组gold_city和gold_type.
我用过这个:
SELECT * , COUNT( * )
FROM gold_2012
GROUP BY gold_type , gold_city
ORDER BY gold_selltime DESC
Run Code Online (Sandbox Code Playgroud)
但它不起作用.
我的结果如下:
gold_city | gold_type | gold_cost | gold_selltime
--------------------------------------------------
city1 | type 1 | 41.23 | 2012-01-01
city2 | type 2 | 43.23 | 2012-01-01
city3 | type 3 | 48.23 | 2012-01-01
Run Code Online (Sandbox Code Playgroud)
但我需要它像:
gold_city | gold_type | gold_cost | gold_selltime
--------------------------------------------------
city1 | type 1 | 40.23 | 2012-03-03
city2 | type 2 | 47.23 | 2012-03-03
city3 | type 3 | 44.23 | 2012-03-03
Run Code Online (Sandbox Code Playgroud)
抱歉! 我忘记了!请参阅上面我编辑过的问题.
him*_*056 12
您可以使用以下MAX功能:
SELECT gold_city, gold_type
, MAX(gold_selltime) AS gold_selltime, COUNT( * ) AS `COUNT`
FROM gold_2012
GROUP BY gold_type , gold_city
ORDER BY gold_selltime DESC
Run Code Online (Sandbox Code Playgroud)
注意:您可以使用以下DATE_FORMAT函数转换日期:
DATE_FORMAT(MAX(gold_selltime), '%Y-%m-%d') AS gold_selltime
Run Code Online (Sandbox Code Playgroud)
由于OP改变了他/她的要求,请看这个更新的答案:
您可以使用以下查询来实现:
SELECT *
FROM gold_2012
WHERE gold_selltime IN
(
SELECT MAX(gold_selltime) AS gold_selltime
FROM gold_2012
)
Run Code Online (Sandbox Code Playgroud)