我有一个DB,它只是一个包含3列的表: viewer_id,movie_id,排名 (整数)(整数)(文字)
此表中的某行表示某个观看者观看了某部电影。
如果观众尚未对电影进行排名,则排名值为NULL。
如果观众确实对电影进行排名而不是排名值 LIKE \不喜欢
我需要编写一个查询,返回前10个查看者ID,其中包含按视图计数排序的最高视图和评级计数 然后评分计数(均按降序排列)。
到目前为止,我编写了一个返回带有viewer_id,movie_watch_count的表的查询 有正确的信息。
SELECT viewer_id , count(*) AS movies_watched
FROM viewers_movies_rankings
Group By viewer_id
我尝试在此表中添加另一列 - “ranking_count”,它将为每个viewer_id计算排名值!= null的行数。 (这样我也可以获得观众排名的电影数量, 因此,在此之后唯一要做的就是按那些列进行排序)
但我写的一切都行不通。 例如(不工作)
SELECT viewer_id , count(*) AS movies_watched,
COUNT(*) AS movies_watched
HAVING ranking != null
FROM viewers_movies_rankings
Group By viewer_id
你能帮助我吗?
答案 0 :(得分:1)
你似乎想要:
COUNT(<expression>)
NULL
计算表达式不是SELECT
viewer_id,
COUNT(*) AS movies_watched,
COUNT(ranking) AS ranking_count
FROM viewers_movies_rankings
GROUP BY viewer_id
的次数 - 这正是您想要做的。
答案 1 :(得分:1)
这是你想要的吗?
COUNT
NULL
函数的默认行为是它只计算非grep option1 m | cut -d "=" -f2 | awk '{$1=$1};1'
值。