Mysql 打印所有活动的名称,既不包括最大人数也不包括最小人数
我怎样才能解决黑客银行这个问题。我很困惑,无法继续前进。 这是我试过的Mysql 打印所有活动的名称,既不包括最大人数也不包括最小人数,mysql,sql,Mysql,Sql,我怎样才能解决黑客银行这个问题。我很困惑,无法继续前进。 这是我试过的 SELECT DISTINCT ACTIVITY FROM FRIENDS, SELECT max(ACTIVITY) AS M WHERE M = (SELECT NAME FROM Activities); 如果mysql版本为8或更高,则可以使用窗口函数 select activity from (select activity, count(*) as cnt,
SELECT DISTINCT ACTIVITY FROM FRIENDS,
SELECT max(ACTIVITY) AS M
WHERE M = (SELECT NAME FROM Activities);
如果mysql版本为8或更高,则可以使用窗口函数
select activity from (select activity, count(*) as cnt,
max(count(*)) over () as maximum_cnt,
min(count(*)) over () as minimum_cnt
from friends group by activity) mytable
where cnt not in (maximum_cnt, minimum_cnt);
我喜欢使用left join和检查NULL来解决类似的任务:
SELECT
ACTIVITY,
SUM(1) AS Total
INTO #ActivityCount
FROM FRIENDS
GROUP BY ACTIVITY
SELECT
ActivityCount.ACTIVITY
FROM #ActivityCount
LEFT JOIN (SELECT MAX(ActivityCount.Total) AS Total FROM ActivityCount) AS MaxTotal
ON ActivityCount.Total = MaxTotal.Total
LEFT JOIN (SELECT MIN(ActivityCount.Total) AS Total FROM ActivityCount) AS MinTotal
ON ActivityCount.Total = MinTotal.Total
WHERE
MaxTotal.Total IS NULL
AND MinTotal.Total IS NULL
这就是我所做的
Select ACTIVITY from Friends
group by ACTIVITY
having count(ACTIVITY) <> (select count1 from (select count(ACTIVITY)
count1 from Friends
group by (ACTIVITY)
order by count1 asc)
where rownum <= 1) and count(ACTIVITY) <> (select count2 from (select count(ACTIVITY) count2 from Friends group by (ACTIVITY) order by count2 desc) where rownum <= 1);
我用mysql解决了这个问题
select activity
from
(select activity, count(activity) as cnt
from friends
group by activity
having cnt <> (select count(activity) from friends group by activity order by count(activity) limit 1)
and
cnt <> (select count(activity) from friends group by activity order by count(activity) desc limit 1)
) as x;
向我们展示一些示例表数据和预期结果-全部为格式化文本,无图像。看看。@jarlh编辑的Alreadyth既不是样本数据也不是预期结果。还有图像…@jarlh抱歉现在检查检查…-'您可以使用窗口函数,如果在版本8或above@P.Salmon. 谢谢你指出。我在回答中添加了注释我需要写什么来代替我的表格@ArunPalanisamy@ahsannissar,那只是一个别名。你可以写任何东西