簡體   English   中英

計數連接和分組連接和排序依據

[英]Concat of count and group concat and order by

我在想以一種相當怪異的方式從db獲取數據時遇到了一些麻煩。 說我有一張桌子

ID  |   Rating
229 |   3
229 |   2
229 |   4
229 |   2
240 |   3
233 |   1
233 |   4
233 |   1
233 |   5
229 |   4
240 |   4

我需要結果看起來像

229 |   4,3,2   |   2,1,2
240 |   4,3     |   1,1
233 |   5,4,1   |   1,1,2

基本上,我需要第二列是按此ID的降序排列的所有唯一分數的列表,第三列需要是每個唯一分數的逗號分隔計數,因此像上面的示例一樣,對於第一個ID,它將是2, 1,2是因為該ID的得分為4,得分為2,得分為3,得分為2,得分為2,得分為2。這必須與第二列的順序相同。 我試過了

select object_id, group_concat(concat(rating)) list, group_concat(qty)
from (
select object_id, rating, count(rating) qty
from wp_fb_ratings
group by rating, object_id
order by rating desc
) n
group by object_id

我需要做什么,除了它完全忽略order by並返回

229 |   3,2,4   |   1,2,2
233 |   1,4,5   |   2,1,1
240 |   3,4     |   1,1

解決方法是什么? 還是應該以其他方式完成?

如果我理解正確,那么您只希望子查詢在執行最終聚合之前計算計數:

select id, group_concat(score order by score desc) as scores,
       group_concat(cnt order by score desc) as counts
from (select id, score, count(*) as cnt
      from table t
      group by id, score
     ) t
group by id;

對於示例中的表:

select object_id, group_concat(rating order by rating desc)as ratings,
       group_concat(qty order by rating desc) as qtys
from (select object_id, rating, count(rating) as qty
      from wp_fb_ratings
      group by rating, object_id
     ) t
group by object_id;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM