gpt4 book ai didi

python - 使用 MySQL 进行数据操作 - 连接和计数

转载 作者:行者123 更新时间:2023-11-29 23:49:26 26 4
gpt4 key购买 nike

大纲:我有两个表 - 一个包含作者和书籍的字典,另一个包含不同作者的书籍之间的比较。

Book_id(PK)    Author               Book_id_1(CPK)   Book_id_2(CPK)    Book_similarity
===================== ==================================================
1 Amy 1 3 High
2 Amy 1 4 Low
3 Ben 2 3 High
4 Ben 2 4 High
3 1 High
3 2 High
4 1 Low
4 2 High

问题:我正在尝试进行查询,返回下表,计算找到的“高”和“低”相似度的数量 - 这可以将书籍追溯到作者写的。

Author_1(CPK)     Author_2(CPK)   Num_high   Num_low
====================================================
Amy Ben 3 1
Ben Amy 3 1

我意识到最终表中存在重叠,但这是我可以做到的唯一方法,以便有一列可搜索。我怀疑我必须使用两个查询来生成结果并在某个地方进行连接,但我对 MySQL 仍然很陌生。

注意:使用 python 和 MySQLdb,如果有用的话。否则,我将把查询插入到 python cur.execute() 中。

最佳答案

这个问题不太清楚,但我猜你正在寻找这样的东西:

SELECT b1.Author AS Author_1, b2.Author AS Author_2,
SUM(CASE WHEN s.Book_similarity = 'High' THEN 1 ELSE 0 END) AS Num_high,
SUM(CASE WHEN s.Book_similarity = 'Low' THEN 1 ELSE 0 END) AS Num_low
FROM similarity s
INNER JOIN book b1 ON b1.book_id = s.book_id_1
INNER JOIN book b2 ON b2.book_id = s.book_id_2
GROUP BY b1.Author, b2.Author

基本上,您只需将相似度表中两个 book_id 上的图书表连接起来(这样您就可以访问 book_id_1 和 book_id_2 中书籍的作者),然后每次相似度较低时对 Num_low 计数 1,并且相同对于 Num_high (当然当相似度很高时)。

关于python - 使用 MySQL 进行数据操作 - 连接和计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25724859/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com