<?xml version="1.0" encoding="UTF-8"?>
|
<!DOCTYPE mapper
|
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
<mapper namespace="com.linghu.mapper.KeywordMapper">
|
|
<resultMap id="BaseResultMap" type="com.linghu.model.entity.Keyword">
|
<id property="keyword_id" column="keyword_id" jdbcType="INTEGER"/>
|
<result property="order_id" column="order_id" jdbcType="VARCHAR"/>
|
<result property="keyword_name" column="keyword_name" jdbcType="VARCHAR"/>
|
<result property="num" column="num" jdbcType="INTEGER"/>
|
<result property="task_id" column="task_id" jdbcType="VARCHAR"/>
|
<result property="status" column="status" jdbcType="VARCHAR"/>
|
</resultMap>
|
|
<sql id="Base_Column_List">
|
keyword_id,order_id,keyword_name,
|
num,task_id,status
|
</sql>
|
<select id="statics" resultType="com.linghu.model.vo.KeywordStaticsVO">
|
SELECT
|
p.platform_id,
|
p.platform_name,
|
SUM( r.repetition_num ) AS total_repetitions,
|
ROUND(
|
SUM( r.repetition_num ) * 100.0 / (
|
SELECT
|
SUM( r2.repetition_num )
|
FROM
|
reference r2
|
WHERE
|
r2.keyword_id = #{keywordId}
|
<if test = "questionId != null" >
|
AND r2.question_id = #{questionId}
|
</if>
|
AND r2.num = #{num}
|
),2) AS repetition_ratio
|
FROM
|
reference r
|
JOIN platform p ON r.platform_id = p.platform_id
|
WHERE
|
r.keyword_id = #{keywordId}
|
<if test = "questionId != null" >
|
AND r.question_id = #{questionId}
|
</if>
|
AND r.num = #{num}
|
|
GROUP BY
|
p.platform_id,
|
p.platform_name
|
ORDER BY
|
total_repetitions DESC
|
LIMIT 30
|
</select>
|
<select id="getResultByTypeId" resultType="com.linghu.model.vo.PlatformProportionVO">
|
SELECT
|
t.type_name,
|
p.platform_name,
|
SUM(r.repetition_num) AS total_repetitions,
|
-- 全平台分布占比 = 当前平台重复次数 / 所有平台重复次数
|
ROUND(SUM(r.repetition_num) * 100.0 / (
|
SELECT SUM(r2.repetition_num)
|
FROM reference r2
|
WHERE r2.keyword_id = #{keywordId}
|
<if test="questionId != null">
|
AND r2.question_id = #{questionId}
|
</if>
|
AND r2.num = #{num}
|
), 2) AS all_platform_ratio,
|
-- 同类平台分布占比 = 当前平台重复次数 / 同类型平台重复次数
|
ROUND(SUM(r.repetition_num) * 100.0 / (
|
SELECT SUM(r3.repetition_num)
|
FROM reference r3
|
JOIN platform p3 ON r3.platform_id = p3.platform_id
|
WHERE r3.keyword_id = #{keywordId}
|
<if test="questionId != null">
|
AND r3.question_id = #{questionId}
|
</if>
|
AND r3.num = #{num}
|
AND p3.type_id = p.type_id
|
), 2) AS same_type_ratio
|
FROM
|
reference r
|
JOIN
|
platform p ON r.platform_id = p.platform_id
|
JOIN
|
type t ON p.type_id = t.type_id
|
WHERE
|
r.keyword_id = #{keywordId}
|
<if test="questionId != null">
|
AND r.question_id = #{questionId}
|
</if>
|
AND r.num = #{num}
|
<if test="typeId != null">
|
AND p.type_id = #{typeId}
|
</if>
|
GROUP BY t.type_name,p.platform_name
|
ORDER BY
|
total_repetitions DESC
|
</select>
|
<select id="getResultByPlatformId" resultType="com.linghu.model.vo.ResultListVO">
|
SELECT
|
r.reference_id,
|
p.platform_name,
|
r.title,
|
r.repetition_num,
|
r.create_time,
|
r.url
|
FROM
|
reference r
|
JOIN
|
platform p ON r.platform_id = p.platform_id
|
WHERE
|
r.keyword_id = #{keywordId}
|
<if test="questionId != null">
|
AND r.question_id = #{questionId}
|
</if>
|
AND r.num = #{num}
|
<if test="platformId != null">
|
AND r.platform_id = #{platformId}
|
</if>
|
|
ORDER BY
|
r.repetition_num,
|
r.create_time DESC
|
</select>
|
</mapper>
|