الخلية:آخر 10 مشاركات لكل مستخدم ؟
سؤال
لدي جدول تخزين بيانات المعاملات للمستخدمين.للعثور على المستخدمين تصنيف تأخذ متوسط درجة آخر 10 إدخالات المستخدم.هل هناك طريقة للحصول على هذا مع SQL ؟
أنا بحاجة إلى أن تكون قادرة على العمل بها لمستخدم واحد بالنظر إلى هوياتهم.و للحصول على قائمة من كافة المستخدمين أمر بها درجة.
حاليا أنا أعمل بها خارج الخلية وتخزينها في آخر عمود لكل مستخدم حتى أستطيع أن ORDER_BY ذلك.
# returns average for all transactions.
SELECT user_id, AVG(score) FROM transactions WHERE user_id = 1
# returns scores for last 10 transactions.
SELECT user_id, score FROM transactions WHERE user_id = 1 ORDER_BY date DESC LIMIT 10
المحلول
استخدام:
SELECT x.user_id,
AVG(x.score)
FROM (SELECT t.user_id,
t.score
FROM TRANSACTIONS t
WHERE t.user_id = ?
ORDER BY t.date
LIMIT 10) x
GROUP BY x.user_id
نصائح أخرى
مجرد الجمع بين اثنين من الاستفسارات بالفعل في استخدام:
SELECT user_id, AVG(score)
FROM transactions
WHERE rowid in (
SELECT rowid
FROM transactions
WHERE user_id = 1
ORDER_BY date DESC
LIMIT 10)
حيث rowid
هو مهما في تحديد هويةهو.
لا تنتمي إلى StackOverflow