मेरे पास एक टेबल जैसा दिखता है

id  user_id  level

1     1        1
2     1        2
3     2        1
4     3        1

यहां यूजर आईडी 1 लेवल 1 और लेवल 2 में मौजूद है अब जब हम ग्रुप बाय लेवल काउंट करते हैं तो काउंटिंग में हम लेवल 1 से यूजर_आईडी 1 को नजरअंदाज करना चाहते हैं क्योंकि यह दूसरे ग्रुप में मौजूद है। हम मौजूदा और उच्च समूह के केवल एक समूह पर विचार करना चाहते हैं।

मैंने केवल ग्रुप काउंट किया है, लेकिन समझ नहीं पा रहा हूं कि काउंटिंग को कैसे इग्नोर किया जाए।

मेरी वर्तमान क्वेरी है

select 'level', DB::raw('count(*) as total') from table GROUP BY level

मेरी क्वेरी रिटर्न गिनती

level      total

1             3
2             1

लेकिन मैं चाहता हूँ की तरह दिखता है

level      total

1             2
2             1
1
code warrior 22 सितंबर 2020, 13:02

2 जवाब

सबसे बढ़िया उत्तर

मैंने इस क्वेरी का उपयोग किया और यह वांछित आउटपुट प्राप्त करता है इसे जांचें:

select T2.MLevel, COUNT(*) as total
  from (select  max(T1.level) as MLevel
    from YourTable as T1
      group by T1.user_id ) as T2
group by T2.MLevel
0
sahar rezazadeh 22 सितंबर 2020, 13:35

ये कोशिश करें,

select 'level', DB::raw('count(*) as total') from table GROUP BY level HAVING level = 1 AND user_id != 1
0
Anish Chikodi 22 सितंबर 2020, 13:12