【问题标题】:MySQL for each video count how many cuepoints have value greater than 50MySQL 为每个视频计算有多少 cuepoints 的值大于 50
【发布时间】:2017-04-14 22:22:24
【问题描述】:

我有一个表格部分,看起来像

对于每个 VideoName,我想计算 Cuepoint 列中有多少值大于 50。

查询的示例输出:

{"VideoName":"TUTORIAL 1","Over50":"21"},
{"VideoName":"TUTORIAL 2","Over50":"23"}...

我还想问是否可以创建一个查询,为每个 VideName 输出每个 Aspect 的使用次数?

查询的示例输出:

{"VideoName":"TUTORIAL 1","Delivery":"2","Speech":"4","Visual aids":8"}...

最后(希望我不会讨厌)是否可以创建一个查询,以确定 UserId 列中的用户使用CommentDate 观看不同视频的顺序?

【问题讨论】:

  • 是的,这些都有可能。
  • 使用COUNT(*)GROUP BY 对组中的行进行计数。
  • 您能帮我创建查询吗,因为我对 MySQL 还很陌生,剩下的时间很少了?
  • 任何 SQL 教程都应该解释如何做到这一点。如果你正在上课,它应该在教科书中。

标签: mysql sql select count


【解决方案1】:

第一个:

SELECT VideoName,COUNT(CuePoint) AS TotalCuePointsgreaterthan50
  FROM Yourtable
WHERE CuePoint >= 50
GROUP BY VideoName; 

第二个:

SELECT VideoName,
       Aspect,
       COUNT(*) AS Count_per_aspect
  FROM Yourtable
GROUP BY VideoName,Aspect;

【讨论】:

  • 第一个查询应该是WHERE CuePoint >= 50
  • 应该是COUNT(*) 而不是SUM(CuePoint)
  • 添加了这些更改.. 谢谢 Barmar!
【解决方案2】:
  1. 对于每个 VideoName,我想计算 Cuepoint 列中有多少值大于 50。

    Select VideoName, SUM(IF(Cuepoint > 50, 1, 0)) Over50 FROM table GROUP BY VideoName;
    
  2. 我还想问是否可以创建一个查询,为每个 VideName 输出每个 Aspect 的使用次数?

    SELECT VideoName, count(*) aspectCount from table GROUP BY VideoName, Aspect;
    

【讨论】:

    猜你喜欢
    • 2019-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-05
    • 1970-01-01
    • 1970-01-01
    • 2016-02-26
    • 2019-04-30
    相关资源
    最近更新 更多