- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 MySQL 5.6 服务器上我有这张表:
CREATE TABLE `student` (
`course` INT(5) NULL DEFAULT NULL,
`course_desc` VARCHAR(50) NULL DEFAULT NULL COLLATE 'utf8_unicode_ci',
`name` VARCHAR(50) NULL DEFAULT NULL COLLATE 'utf8_unicode_ci',
`vote` INT(2) NULL DEFAULT NULL,
UNIQUE INDEX `course_name` (`course`, `name`)
)
COLLATE='utf8_unicode_ci'
ENGINE=InnoDB;
有数据:
INSERT INTO `student` (`course`, `course_desc`, `name`, `vote`) VALUES (100, 'Math', 'Mario', 10);
INSERT INTO `student` (`course`, `course_desc`, `name`, `vote`) VALUES (100, 'Math', 'Giovanna', 8);
INSERT INTO `student` (`course`, `course_desc`, `name`, `vote`) VALUES (100, 'Math', 'Federico', 8);
INSERT INTO `student` (`course`, `course_desc`, `name`, `vote`) VALUES (100, 'Math', 'Arianna', 5);
INSERT INTO `student` (`course`, `course_desc`, `name`, `vote`) VALUES (200, 'History', 'Mario', 9);
INSERT INTO `student` (`course`, `course_desc`, `name`, `vote`) VALUES (200, 'History', 'Giovanna', 7);
INSERT INTO `student` (`course`, `course_desc`, `name`, `vote`) VALUES (200, 'History', 'Patrizio', 3);
INSERT INTO `student` (`course`, `course_desc`, `name`, `vote`) VALUES (200, 'History', 'Teresa', 10);
INSERT INTO `student` (`course`, `course_desc`, `name`, `vote`) VALUES (300, 'Literacy', 'Giovanna', 7);
INSERT INTO `student` (`course`, `course_desc`, `name`, `vote`) VALUES (300, 'Literacy', 'Federico', 6);
INSERT INTO `student` (`course`, `course_desc`, `name`, `vote`) VALUES (300, 'Literacy', 'Arianna', 10);
INSERT INTO `student` (`course`, `course_desc`, `name`, `vote`) VALUES (400, 'Science', 'Giovanni', 9);
INSERT INTO `student` (`course`, `course_desc`, `name`, `vote`) VALUES (400, 'Science', 'Giovanna', 7);
INSERT INTO `student` (`course`, `course_desc`, `name`, `vote`) VALUES (400, 'Science', 'Maria', 9);
INSERT INTO `student` (`course`, `course_desc`, `name`, `vote`) VALUES (400, 'Science', 'Teresa', 0);
INSERT INTO `student` (`course`, `course_desc`, `name`, `vote`) VALUES (400, 'Science', 'Carlo', 7);
INSERT INTO `student` (`course`, `course_desc`, `name`, `vote`) VALUES (400, 'Science', 'Federico', 6);
INSERT INTO `student` (`course`, `course_desc`, `name`, `vote`) VALUES (500, 'Philosophy', 'Maria', 10);
这个查询:
SELECT
(@id := @id + 1) AS "ID",
t1.`course` AS "COURSE",
t1.`course_desc` AS "COURSE_DESC",
t1.`name` AS "NAME",
t1.`vote` AS "VOTE",
CASE
WHEN @prev_course = t1.`course` THEN
(
CASE
WHEN @prev_vote = t1.`vote` THEN @rank_count
WHEN @prev_vote := t1.`vote` THEN @rank_count := @rank_count + 1
END
)
WHEN @prev_course := t1.`course` THEN
(
@rank_count := 1
)
END AS "RANK"
FROM
(SELECT @id := 0) AS t0,
`student` AS t1,
(SELECT @prev_course := NULL) AS t2,
(SELECT @prev_vote := NULL) AS t3,
(SELECT @rank_count := 0) AS t4
ORDER BY
t1.`course`,
t1.`vote` DESC;
产生错误的结果:
------------------------------------------------------------------
ID COURSE COURSE_DESC NAME VOTE RANK
------------------------------------------------------------------
1 100 Math Mario 10 1
2 100 Math Giovanna 8 2
3 100 Math Federico 8 2
4 100 Math Arianna 5 3
5 200 History Teresa 10 1
6 200 History Mario 9 2
7 200 History Giovanna 7 3
8 200 History Patrizio 3 4
9 300 Literacy Arianna 10 1
10 300 Literacy Giovanna 7 2
11 300 Literacy Federico 6 3
12 400 Science Giovanni 9 1
13 400 Science Maria 9 2
14 400 Science Giovanna 7 3
15 400 Science Carlo 7 3
16 400 Science Federico 6 4
17 400 Science Teresa 0 NULL
18 500 Philosophy Maria 10 1
------------------------------------------------------------------
这个其他查询:
SELECT
(@id := @id + 1) AS "ID",
t1.`course` AS "COURSE",
t1.`course_desc` AS "COURSE_DESC",
t1.`name` AS "NAME",
t1.`vote` AS "VOTE",
CASE
WHEN @prev_course = t1.`course_desc` THEN
(
CASE
WHEN @prev_vote = t1.`vote` THEN @rank_count
WHEN @prev_vote := t1.`vote` THEN @rank_count := @rank_count + 1
END
)
WHEN @prev_course := t1.`course_desc` THEN
(
@rank_count := 1
)
END AS "RANK"
FROM
(SELECT @id := 0) AS t0,
`student` AS t1,
(SELECT @prev_course := NULL) AS t2,
(SELECT @prev_vote := NULL) AS t3,
(SELECT @rank_count := 0) AS t4
ORDER BY
t1.`course`,
t1.`vote` DESC;
产生一个非常错误的结果
------------------------------------------------------------------
ID COURSE COURSE_DESC NAME VOTE RANK
------------------------------------------------------------------
1 100 Math Mario 10 NULL
2 100 Math Giovanna 8 1
3 100 Math Federico 8 1
4 100 Math Arianna 5 2
5 200 History Teresa 10 3
6 200 History Mario 9 4
7 200 History Giovanna 7 5
8 200 History Patrizio 3 6
9 300 Literacy Arianna 10 7
10 300 Literacy Giovanna 7 8
11 300 Literacy Federico 6 9
12 400 Science Giovanni 9 10
13 400 Science Maria 9 10
14 400 Science Giovanna 7 11
15 400 Science Carlo 7 11
16 400 Science Federico 6 12
17 400 Science Teresa 0 NULL
18 500 Philosophy Maria 10 13
------------------------------------------------------------------
目标是根据 vote
值从顶部 (1) 到底部 (n) 对表进行排名。相同的投票 = 相同的排名。按类(class)分组。我需要一些帮助非常感谢
先生
最佳答案
你的问题有点不清楚你想要什么。但是你对变量的使用是错误的。您不应该在一个表达式中分配一个变量,然后在另一个表达式中引用它。 MySQL 不保证 select
中表达式的求值顺序,因此它们可能会以错误的顺序求值。
我想你想要这样的东西:
select s.*,
(@rn := if(@c = course_desc, @rn + 1,
if(@c := course_desc, 1, 1)
)
) as rank
from (select s.*
from student s
order by s.course_desc, s.vote desc
) s cross join
(select @c := '', @rn := 0) params;
如果想让投票相同的学生有相同的值:
select s.*,
(@rn := if(@cv = concat_ws(':', course_desc, vote), @rn,
if(@cv like concat(course_desc, ':%'),
if(@cv := concat_ws(':', course_desc, vote), @rn + 1, @rn + 1),
if(@cv := concat_ws(':', course_desc, vote), 1, 1)
)
)
) as rank
from (select s.*
from student s
order by s.course_desc, s.vote desc
) s cross join
(select @cv := '', @rn := 0) params
关于mysql - 使用 MySQL 变量按评分创建组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50529829/
当我搜索“iphone”时,我有以下记录和分数 - 记录1: 字段名称 - 显示名称:“iPhone” 字段名称 - 名称:“iPhone” 11.654595 = (MATCH) sum of:
Types Description: parent type 1)Parent Type: "product" 2)childType : "ratings" 问题描述:我有一个es查询(q
如果您使用 Freebase 搜索按名称获取任何实体的匹配项,您将获得按 relevance score 排序的结果.例如尝试 Taj Mahal . 我正在尝试使用 Freebase 数据转储获得类
我试图根据多个不同的标准给不同的城市打从 1 到 5 的“分数”,最终将分数相加并决定哪个城市最好。 表“international_tobacco_alcohol”包含居民用于酒精和烟草的收入百分比
我有一年中任何一个季度的索引(“index-2015.1”,“index-2015.2”...) 我在每个索引上有大约 3000 万个文档。 文档有一个文本字段('title') 我的文档排序方式是(
我有一个数组,我想根据为数组中的每个元素分配一个分数来排序。 假设可能的分数范围是 0-100。为了获得该分数,我们将使用 2 个比较数据点,一个权重为 75,一个权重为 25。我们称它们为 valu
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 4 年前。 Improve this qu
做一排星星作为评级是微不足道的,但我不确定做随机数的正确 flutter 方法是什么? 换句话说,假设我的评分最多为 5 颗星,我该怎么做,只有一颗或两颗星?我可以有一个 switch 语句,并返回带
我需要创建一个灵活的(最好是动态的)评分引擎,就像信用评分或保费计算系统一样。有创建评分引擎实践经验的人有任何建议、示例或建议模式吗? 我已经知道: Rete Algorithm FICO The o
我的索引中有以下类型的文档,但由于深度嵌套方面,找不到正确排序的方法。 文档示例: { "metadatas": [{ "name": "name", "timeValidity"
我正在寻找 Lucene (Java) 中的相似性模块,它给出基于权重的分数。我知道这很模糊,最好用一个例子来解释。 Document 1 ----------- Firstname: Frances
我对 Lucene 8 比较陌生,想了解如何将旧版 Solr 4 评分迁移到 Lucene。这就是 Solr 4 目前的做法。 /* * From the SolrRelevan
我正在使用 Lucene 来构建标记共现的大型索引(例如 [elephant,animal]、[melon,fruit]、[宝马,汽车],...)。我使用 BooleanQuery 查询索引以获取绝对
Ratingbar 星未正确显示。我不知道我做错了什么。当我使用自定义样式时,只显示一颗星,它的长度等于 5 星。 风格是: @drawable/manual_ratingbar
我编写了一个程序,它读取 imdb 上排名前 250 的电影的名称和评分,并返回评分的平均值。我有以下程序 import java.io.IOException; import org.jsoup.*
我有一个直截了当的问题,我将 ngram 用于部分匹配。实现效果很好,但得分结果并不像我希望的那样有效。我希望我的分数结果看起来像这样: 柯:.1 Kev:.2 凯维:.3 凯文:.4 相反,我得到以
假设我有一个像这样的 MySQL 表: 软件表: id int name text votes int rating int 其中投票是某人为该项目投票的次数,评分是这些投票的平均值。 示例数据: i
我在索引期间使用过滤器 EdgeNGramTokenFilter。 当我寻找一个词时。当 Lucene 找到完整单词或另一个单词的一部分时,它的评分不会产生差异。 例如,如果我正在查找单词 PUB。我
我们正在使用 java 并使用 elasticsearch java api 开发一个应用程序。我们对元数据建立了索引,并希望在索引时或搜索时使用排名/评分。 而且,我不知道是否可以对用户单击结果时选
有人可以解释(或引用引用资料)用更简单的词来比较 SOLR 和 LUCENE 使用的评分机制。 它们有什么区别吗? 我不太擅长 solr/lucene,但我的发现表明它们似乎不同。 P.S:我只是尝试
我是一名优秀的程序员,十分优秀!