127 lines
3.1 KiB
MySQL
127 lines
3.1 KiB
MySQL
|
|
-- 测试主播统计数据
|
|||
|
|
-- 用于验证粉丝数、关注数等统计是否正确
|
|||
|
|
|
|||
|
|
-- 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 = '取消关注';
|