MySQL基于不同时间级别的热门行

2023-12-23

我有 2 张桌子:photo and like。我正在尝试根据一天内的点赞数来获取热门照片。所以基本上是这样的“今天流行”.

SELECT
  p.id AS id, COUNT(li.id) AS total_likes \
FROM `photo` p \
  LEFT JOIN `like` li \
    ON p.id = li.photo_id \
WHERE
  li.date > DATE_SUB(CURDATE(), INTERVAL 1 DAY) \
GROUP BY \
  p.id

当今天有足够多的喜欢时,这种方法很有效。但如果过去一天没有点赞,则不会返回任何记录。

我也想稍微改变一下这一点。可以制作等级吗?例如:
根据多天对照片进行排名:

1. Get photos based on how many likes today
2. Get photos based on how many likes for last week
and so on...

基本上,假设我们需要获得 30 个项目。首先,它会尝试根据今天的点赞数来获取行。它可以是 20、15 等任意数字。然后它将获取总数达到 30 所需的剩余行,但现在将根据一周内的点赞数进行排序。

So something like:
SELECT FROM photo SORT BY likes today, likes in a week ...

感谢您的帮助!


您可以根据 CASE 计算不同的计数,例如过去 30 天的点赞数以及最后一天的计数。上周和过去 30 天:

SELECT
  p.id AS id
  ,COUNT(CASE WHEN li.DATE > DATE_SUB(CURDATE(), INTERVAL 1 DAY) THEN li.id END) AS daily_likes
  ,COUNT(CASE WHEN li.DATE > DATE_SUB(CURDATE(), INTERVAL 7 DAY) THEN li.id END) AS weekly_likes
  ,COUNT(li.id) AS total_likes
FROM `photo` p
JOIN `LIKE` li
    ON p.id = li.photo_id
WHERE
  li.DATE > DATE_SUB(CURDATE(), INTERVAL 30 DAY)
GROUP BY
  p.id
ORDER BY daily_likes DESC, weekly_likes DESC, total_likes DESC
LIMIT 30

我不知道你的限制是基于哪个定义,它可能是这样的

SELECT *
FROM
 (
   SELECT
     p.id AS id
     ,COUNT(CASE WHEN li.DATE > DATE_SUB(CURDATE(), INTERVAL 1 DAY) THEN li.id END) AS daily_likes
     ,COUNT(CASE WHEN li.DATE > DATE_SUB(CURDATE(), INTERVAL 7 DAY) THEN li.id END) AS weekly_likes
     ,COUNT(li.id) AS total_likes
   FROM `photo` p
   JOIN `LIKE` li
       ON p.id = li.photo_id
   WHERE
     li.DATE > DATE_SUB(CURDATE(), INTERVAL 30 DAY)
   GROUP BY
     p.id
  ) AS dt
ORDER BY
   case when daily_likes > 20 then daily_likes else 0 end desc,
   case when weekly_likes > 100 then weekly_likes else 0 end desc,
   total_likes DESC
LIMIT 30
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL基于不同时间级别的热门行 的相关文章

  • 两个日期之间有多少周

    我的数据库 MySQL 中有开始日期和结束日期 我怎样才能得到答案 这两个日期有多少周 或天 mysql 或 php 例如我有这样的数据库 开始并 会停2009 12 17 2009 12 242009 12 12 2009 12 26 更
  • 如何让MySQL数据库完全在内存中运行?

    我注意到我的数据库服务器支持内存数据库引擎 我想让一个已经运行 InnoDB 的数据库完全在内存中运行以提高性能 我怎么做 我探索了 PHPMyAdmin 但找不到 更改引擎 功能 假设您了解注释中提到的使用 MEMORY 引擎的后果 并且
  • 高级 MySQL:查找民意调查响应之间的相关性

    我有四个 MySQL 表 users 身份证号 姓名 polls ID 文本 options id poll id 文本 回应 id poll id 选项 id 用户 id 给定一个特定的民意调查和一个特定的选项 我想生成一个表格 显示其他
  • 使用 JdbcTemplate 进行动态查询

    我有一个关于使用 JdbcTemplate 进行动态查询的问题 我的代码如下 String insertQueries INSERT INTO tablename StringJoiner joiner new StringJoiner S
  • 如何从准备好的语句中获取标量结果?

    是否可以将准备好的语句的结果设置为变量 我正在尝试创建以下存储过程 但失败了 第 31 行出现错误 1064 42000 您的 SQL 语法有错误 检查与您的 MySQL 服务器版本相对应的手册 了解在 stmt USING m c a 附
  • 从mysql数据库读取pdf文件

    我正在使用这个例子http www php mysql tutorial com wikis mysql tutorials uploading files to mysql database aspx http www php mysql
  • 为什么java字符串在MYSQL中不保存为UTF-8?

    message new String round id getBytes UTF 8 conn DriverManager getConnection jdbc mysql host db useUnicode true character
  • MySQL 无法使用 PHP 连接到本地主机上的服务器

    我正在使用 XAMPP 1 7 2 可以通过 cmd 和 SQLYog 连接到 MySQL 但不能以编程方式连接 这段 PHP 代码 conn mysql connect localhost root if conn die Could n
  • MySQL - 如何按相关性排序? INNODB表

    我在一个名为 cards 的 INNODB 表中有大约 20 000 行 所以 FULLTEXT 不是一个选项 请考虑这张表 id name description 1 John Smith Just some dude 2 Ted Joh
  • 安装 mysql2 时出错:无法构建 gem 本机扩展

    我在尝试安装时遇到一些问题mysql2Rails 的宝石 当我尝试通过运行安装它时bundle install or gem install mysql2它给了我以下错误 安装 mysql2 时出错 错误 无法构建 gem 本机扩展 我该如
  • 在 Entity-Framework Core 中批量插入到 MySQL [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有一个由约 10 000 个对象组成的列表 比方说类Person 我需要将其插入到 MySQL 表中
  • 在 MySql 中查找周年纪念日是否在 n 天后到来

    我有一张写有周年纪念日的桌子 我想要一个查询 该查询返回接下来 10 天内即将到来的周年纪念日行 例如 birthdate 1965 10 10 1982 05 25 SELECT birthdate FROM Anniversaries
  • MySql 完全联接(联合)和多个日期列的排序

    一个相当复杂的 sql 查询 我可能使它变得更加困难 我有两张桌子 消息 newsid 日期时间 新闻文本 图片 图片ID 日期时间 imgPath 两者没有关系 我只是在新闻 图片创建的日期之前加入 到目前为止的 SQL SELECT F
  • 保存用户的身高和体重

    我应该如何将用户的身高和体重存储在MySQL数据库中 以便我可以使用这些信息来查找特定身高或体重内的用户 另外 我需要能够以英制或公制显示此信息 我的想法是存储以厘米为单位的身高和以公斤为单位的体重信息 我更喜欢公制而不是英制 我什至可以让
  • 用于分页的php示例脚本[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 任何人都可以建议一个好的分页 php 脚本 其中人们想要分页显示数据库中的大量项目 以下链接可以帮助您
  • 为什么在 MAC OSX 上编译简单的 mysql c 应用程序时不断收到未定义的符号?

    我正在使用 MACOS 并尝试编写一个 测试 mysql 应用程序 该应用程序仅测试与本地数据库的连接 include
  • MySQL 多个 IN 条件对同一个表进行子查询

    我有多个带有子查询的 IN 条件 SELECT S name S email FROM something S WHERE 1 NOT IN SELECT id FROM tags WHERE somethingId S id AND 2
  • 使用 JOIN 和 UNION 合并不同表中的记录

    我需要创建一个查询来组合两个表中的数据 我认为可能是 JOIN 和 UNION 的组合 在此示例中 我需要列出状态处于活动状态的所有姓名 仅一次 并将他们的葡萄酒 苏打水 晚餐 甜点和水果偏好组合起来 按姓名排序 我不确定单独的 JOIN
  • 如何将另一列的整数值添加到日期列?

    我试图将整数添加到日期 但出现以下错误 1064 你的 SQL 语法有错误 检查与您的 MySQL 服务器版本相对应的手册 了解在第 6 行的 wp OrderDate INTERVAL WPProduct Duration DAY AS
  • PHP 中的嵌套 JSON 输出

    我正在为 iOS 应用程序构建 API 并尝试将 mySQL 数据转换为 JSON 字符串进行处理 所需的输出将需要顶级订单详细信息 例如客户名称和地址 然后是订购的产品子数组 我需要的两个表中有相当多的字段 我希望拥有所有字段 我已经构建

随机推荐

  • 如何使用 XmlDocument 创建 XML 文档?

    如何创建这样的 XML 文档
  • leetcode中二叉树的类定义解释

    希望有人能帮助我了解这门课是如何运作的 我目前正在 udemy 中学习 JavaScript 算法 它们解释如何在二叉树中执行所有操作的方式与 leetcode 显示的稍有不同 课程中 树的定义与leetcode相同或非常相似 class
  • Lib Gdx json 序列化异常和缺少无参数构造函数

    当尝试执行这段代码时 public void load String filename FileHandle file Gdx files external filename bim Json json new Json String te
  • 在.net框架中测试

    我创建了一个针对 NET Framework 4 6 1 的单元测试项目 测试显示在测试资源管理器中 并在 Visual Studio 2017 中正常运行 我想设置一个构建过程 所以我想从命令行运行测试 我尝试使用 mstest 但这没有
  • 詹金斯正在重新启动,请稍候 - 等待很长时间

    我更新了一些插件并重新启动了詹金斯 但现在它说 Jenkins 正在重新启动 请稍候 当 Jenkins 准备就绪时 您的浏览器将自动重新加载 花费了太多时间 从最后 40 分钟开始等待 我只有 1 个项目 大约有 20 个版本 我已经重新
  • Tkinter - 使用自动换行计算文本小部件中的行数

    我想知道如何获取启用自动换行的 Tkinter Text 小部件中的行数 在此示例中 文本小部件中有 3 行 from Tkinter import root Tk text Text root width 12 height 5 wrap
  • 我从 .ssh 文件夹中删除了known_hosts 文件,并且无法在 BitBucket 存储库中拉取或推送

    我犯了一个错误 删除了 ssh 文件夹中的 known hosts 文件 现在我无法在 BitBucket 存储库中拉取或推送 我该如何解决 尝试执行 ssh T email protected cdn cgi l email protec
  • 从第二个 ViewController 返回到第一个 ViewController

    我正在构建一个当前有 3 个 ViewController 的应用程序 其中之一是在成功登录后使用的 因此与这个问题无关 当我发现 Storyboard 无法提供所需的精细控制时 我混合使用 Storyboard 并以编程方式构建内容 第一
  • 使用打字稿模板将 create-react-app 更新到 4.0 时出错

    我要更新react scripts到下一个版本 4 0 0 这样我就可以使用本指南使用快速刷新功能here https gist github com iansu 282dbe3d722bd7231fa3224c0f403fa1 但是当重新
  • 金字塔 postgresql 连接

    我对金字塔完全陌生 我正在尝试开发一个同时使用金字塔和 postgresql 的应用程序 但我对如何配置 sripts 目录中的initializedb py 文件 尤其是初始化数据库 完全感到困惑 我正在使用 PostgreSQL 9 1
  • 在android布局中layout_height =“0dip”的效果/含义是什么

    我见过几个使用的例子 android layout height 0px 或 0dip 但我不明白这样做的影响 看起来这会使布局高度为 0 像素 该值是否有所减轻 但还有一些其他因素 例如 重量 或任何父视图的高度 是的 你对重量的看法是正
  • Twig 将内容附加到块

    在树枝模板中 是否可以将内容附加到块中 例如 请考虑下面的模板文件 布局 html twig block content endblock content 内部 html twig block css a color fff body ba
  • 通过Python suds在JIRA中创建问题时设置受让人字段

    使用 JIRA 版本 4 2 使用 Python 2 7 和 suds 0 4 如何创建受让人字段集的问题 下面的代码中将忽略受让人字段 new issue client service createIssue auth project N
  • 使用Webpack将Vue暴露到全局

    我正在使用旧版 Rails 应用程序 该应用程序已部分迁移为使用 Webpacker 和 Vue 我们还有一个通过 CDN 加载的遗留脚本 该脚本也需要使用 Vue 但是 我们不想将 Vue 捆绑到其中 而只使用旧版 Rails 应用程序中
  • GNU Make 支持文件名中的“%”吗?

    在 GNU Make 中 是否可以依赖包含以下内容的文件 在文件名中 我有这样的事情 foo results 10 dat gnuplot config plt 虽然我当然可以选择不同的文件名 但很高兴知道是否 应该始终避免 或者是否有一种
  • Slurm:为什么在 sbatch 中使用 srun?

    在 sbatch 脚本中 您可以直接启动程序或脚本 例如可执行文件myapp 但在许多教程中人们使用srun myapp反而 尽管阅读了有关该主题的一些文档 我不明白其中的区别以及何时使用这些语法 我希望这个问题足够精确 SO的第一个问题
  • 如何从密钥库列出/导出私钥?

    如何列出并从密钥库导出私钥 您可以使用 Java6 和 OpenSSL 从密钥库中提取私钥 这一切都取决于 Java 和 OpenSSL 都支持 PKCS 12 格式的密钥库这一事实 要进行提取 您首先使用keytool转换为标准格式 确保
  • 用于编译 GUI 表单的 Ant 任务(Intellij IDEA)

    如何在 Intellij IDEA 中创建 Ant 任务来编译 GUI 表单 XML 我在项目中使用 Scala 和 Java Java仅用于GUI类 我使用Intellij IDEA UI Designer创建它 请不要打败我 但在设置
  • 原始 SQL 请求中的 Rails 4 字符串插值

    在不进行插值的情况下重写此查询的最佳方法是什么 def case joins type subquery lt lt SQL squish SELECT id FROM cases c2 WHERE c2 title id titles i
  • MySQL基于不同时间级别的热门行

    我有 2 张桌子 photo and like 我正在尝试根据一天内的点赞数来获取热门照片 所以基本上是这样的 今天流行 SELECT p id AS id COUNT li id AS total likes FROM photo p L