zhibo/test_streamer_stats.sql

127 lines
3.1 KiB
MySQL
Raw Normal View History

2026-01-03 15:32:31 +08:00
-- 测试主播统计数据
-- 用于验证粉丝数、关注数等统计是否正确
-- 1. 查看所有主播用户
SELECT uid, nickname, is_streamer, streamer_level, phone
FROM eb_user
WHERE is_streamer = 1
ORDER BY uid;
-- 2. 查看关注记录表的数据
SELECT
id,
follower_id,
follower_nickname,
followed_id,
followed_nickname,
follow_status,
is_deleted,
create_time
FROM eb_follow_record
ORDER BY create_time DESC
LIMIT 20;
-- 3. 统计每个用户的粉丝数(有多少人关注了我)
SELECT
u.uid,
u.nickname,
u.is_streamer,
COUNT(fr.id) as fans_count
FROM eb_user u
LEFT JOIN eb_follow_record fr ON u.uid = fr.followed_id
AND fr.follow_status IN ('1', '关注')
AND fr.is_deleted = 0
WHERE u.is_streamer = 1
GROUP BY u.uid, u.nickname, u.is_streamer
ORDER BY fans_count DESC;
-- 4. 统计每个用户的关注数(我关注了多少人)
SELECT
u.uid,
u.nickname,
u.is_streamer,
COUNT(fr.id) as following_count
FROM eb_user u
LEFT JOIN eb_follow_record fr ON u.uid = fr.follower_id
AND fr.follow_status IN ('1', '关注')
AND fr.is_deleted = 0
WHERE u.is_streamer = 1
GROUP BY u.uid, u.nickname, u.is_streamer
ORDER BY following_count DESC;
-- 5. 查看某个特定主播的详细统计(替换 USER_ID 为实际的用户ID
SET @USER_ID = 1;
SELECT
'粉丝数' as stat_type,
COUNT(*) as count
FROM eb_follow_record
WHERE followed_id = @USER_ID
AND follow_status IN ('1', '关注')
AND is_deleted = 0
UNION ALL
SELECT
'关注数' as stat_type,
COUNT(*) as count
FROM eb_follow_record
WHERE follower_id = @USER_ID
AND follow_status IN ('1', '关注')
AND is_deleted = 0
UNION ALL
SELECT
'直播间数' as stat_type,
COUNT(*) as count
FROM eb_live_room
WHERE uid = @USER_ID
UNION ALL
SELECT
'正在直播' as stat_type,
COUNT(*) as count
FROM eb_live_room
WHERE uid = @USER_ID
AND is_live = 1;
-- 6. 查看谁关注了某个主播
SELECT
fr.follower_id,
u.nickname as follower_nickname,
fr.follow_status,
fr.create_time
FROM eb_follow_record fr
LEFT JOIN eb_user u ON fr.follower_id = u.uid
WHERE fr.followed_id = @USER_ID
AND fr.follow_status IN ('1', '关注')
AND fr.is_deleted = 0
ORDER BY fr.create_time DESC;
-- 7. 查看某个主播关注了谁
SELECT
fr.followed_id,
u.nickname as followed_nickname,
fr.follow_status,
fr.create_time
FROM eb_follow_record fr
LEFT JOIN eb_user u ON fr.followed_id = u.uid
WHERE fr.follower_id = @USER_ID
AND fr.follow_status IN ('1', '关注')
AND fr.is_deleted = 0
ORDER BY fr.create_time DESC;
-- 8. 检查关注状态的数据类型和值
SELECT
follow_status,
COUNT(*) as count,
GROUP_CONCAT(DISTINCT CONCAT('ID:', id) SEPARATOR ', ') as sample_ids
FROM eb_follow_record
GROUP BY follow_status;
-- 9. 修复可能的数据问题:将字符串状态统一为数字
-- UPDATE eb_follow_record SET follow_status = '1' WHERE follow_status = '关注';
-- UPDATE eb_follow_record SET follow_status = '0' WHERE follow_status = '取消关注';