Mysql sql查询所需的建议。需要计算一首歌在音乐节上播放的时间,以及它在决赛中获胜的次数
希望您能帮助我,这是表格的结构: codIscr(识别歌曲、播放者和播放事件)(使用dataser主键) dataser(播放它的事件的日期) 投票 Posizione(相对于日期的位置,活动最后日期的获胜者为最终获胜者) 这是我使用的查询:Mysql sql查询所需的建议。需要计算一首歌在音乐节上播放的时间,以及它在决赛中获胜的次数,mysql,sql,count,subquery,Mysql,Sql,Count,Subquery,希望您能帮助我,这是表格的结构: codIscr(识别歌曲、播放者和播放事件)(使用dataser主键) dataser(播放它的事件的日期) 投票 Posizione(相对于日期的位置,活动最后日期的获胜者为最终获胜者) 这是我使用的查询: SELECT X.codIscr, count(X.codIscr=Y.codIscr),count(X.Posizione=1 AND Y.Posizione=1) FROM concorre X, concorre Y WHERE
SELECT X.codIscr, count(X.codIscr=Y.codIscr),count(X.Posizione=1 AND Y.Posizione=1)
FROM concorre X, concorre Y
WHERE X.codIscr=Y.codIscr AND X.dataSer!=Y.dataSer AND
X.codIscr IN(SELECT DISTINCT codIscr FROM iscrizione WHERE codEv=1)
GROUP BY X.codIscr HAVING count(X.codIscr=Y.codIscr)>1
它应该给我4个不同的codIscr结果,2个作为歌曲在比赛中播放的时间量(对于所有4个),1个作为他们在比赛中获得第一的次数(在“半决赛”期间等),除了比赛最后日期的获胜者,它应该有2个作为它获得第一的次数。。。相反,所有4首歌曲作为最后一次计数给我2。。。有人能帮忙吗 查询看起来不正确。假设问题如标题所示:“需要计算一首歌在音乐节上播放的时间以及它在决赛中获胜的次数”,我不希望在查询中看到自动加入 我认为您只需要条件聚合:
SELECT c.codIscr, count(*) as TimesPlayed, sum(c.Posizione = 1) as NumTimesFirst
FROM concorre c
GROUP BY c.codIscr;
我不确定iscrizione是做什么的,但是如果你想限制歌曲,你可以在where
子句中这样做:
SELECT c.codIscr, count(*) as TimesPlayed, sum(c.Posizione = 1) as NumTimesFirst
FROM concorre c
WHERE c.codIscr IN (SELECT i.codIscr FROM iscrizione i WHERE i.codEv = 1)
GROUP BY c.codIscr;
HAVING count(*) > 1
in
子句中的distinct
是多余的
如果您想要播放至少两次的歌曲,请添加having
子句:
SELECT c.codIscr, count(*) as TimesPlayed, sum(c.Posizione = 1) as NumTimesFirst
FROM concorre c
WHERE c.codIscr IN (SELECT i.codIscr FROM iscrizione i WHERE i.codEv = 1)
GROUP BY c.codIscr;
HAVING count(*) > 1
考虑将适当的DDL(和/或SqLFIDLE)与期望的结果集一起提供