2016-04-01 24 views
1
SELECT 
    user_id, 
    count(*) total, 
    sum(case when type = 'yes' then 1 else 0 end) as type_1, 
    sum(case when type = 'no' then 1 else 0 end) as type_2 
FROM history 
GROUP by user_id 

Bu sorgudan en fazla type = 'yes' olan en az TOP 100 satırı nedir?Sorgudan nasıl çıkılır?

+3

MySql'de buna Limit denir. Örneğin. SELECT * Tablo LİMİTEDEN 100; – derloopkat

cevap

1

Sonuçların sayısını sınırlamak için LIMIT'i kullanabilir ve sonuçları almak için SİPARİŞ BY kullanın, böylece sonuçlar toplam azalan sırada olur.

SELECT 
    user_id, 
    count(*) total, 
    sum(case when type = 'yes' then 1 else 0 end) as type_1, 
    sum(case when type = 'no' then 1 else 0 end) as type_2 
FROM history 
GROUP by user_id 
ORDER BY type_1 DESC 
LIMIT 100 
+0

Neden bu yazıldığından emin olmadı, tip2 her zaman "WHERE" ifadesiyle 0 olur. Ve yanlış sütunla sipariş veriyorsunuz. – Kilgore

+0

Ben cevabım – rharvey

0

ifadesi sorgunuzla Ayrıca koşullu deyimi eklemek NEREDE O 100'le

argüman azalan ve sınır sonucu verilerinizi sipariş gerektiği anlamına gelir, böylece seni mysql kullandığınızı görebilirsiniz eklemek gerekir
SELECT 
     user_id, 
     count(*) total, 
     sum(case when type = 'yes' then 1 else 0 end) as type_1, 
     sum(case when type = 'no' then 1 else 0 end) as type_2 
    FROM history 
    WHERE type='yes' 
    GROUP by user_id 
    ORDER BY total DESC 
    LIMIT 100 
+0

Üzgünüm, bu kod soruya cevap olsa _why_ ilgili ek bağlam sağlayan bunun cevabını :( –

0
SELECT 
    user_id, 
    count(*) total, 
    sum(case when type = 'yes' then 1 else 0 end) as type_1, 
    sum(case when type = 'no' then 1 else 0 end) as type_2 
FROM history 
GROUP by user_id 
ORDER by type_1 DESC 
LIMIT 100 
+0

görmek ve/veya soru önemli ölçüde uzun vadeli artıracak cevaplar _how_ vermedi güncelledik Bazı açıklama eklemek için lütfen cevabınızı [düzenle] . –

+0

@TobySpeight anlayamıyorum, bana biraz açıklama eklemeniz gerekip gerekmediğini söyleyin? – user6129461

İlgili konular