如何在mysql中查找最频繁的字符串

8zzbczxx  于 2021-06-18  发布在  Mysql
关注(0)|答案(3)|浏览(257)

我想得到最常见的汽车类型(瓦尔查尔)内的25岁以上的业主。我写了一个查询,但是它统计了所有类型的名字。我如何补充这个mysql查询来只计算相同名称类型的汽车?

SELECT type, COUNT(type) 
FROM `car` 
INNER JOIN owner 
ON car.owner= tulajdonos.id 
WHERE 2018 - owner.birth_date >= 25
0g0grzrc

0g0grzrc1#

您必须对查询进行降序排序,并且只取最上面的一行 LIMIT 1 .

SELECT type, COUNT(type) AS counter 
FROM `car` 
INNER JOIN owner 
ON car.owner= tulajdonos.id 
WHERE 2018 - owner.birth_date >= 25
GROUP BY type
ORDER BY COUNT(type) DESC 
LIMIT 1
cdmah0mi

cdmah0mi2#

你可以从正确计算日期开始。在那之后,你可能只想 limit :

SELECT c.type, COUNT(*) AS counter 
FROM car c INNER JOIN
     owner o
     ON c.owner= o.id 
WHERE o.birth_date < curdate() - interval 25 year;
ORDER BY counter DESC 
LIMIT 1
arknldoa

arknldoa3#

如果你想要一个最常见的类型,你可以使用

SELECT top 1 type, COUNT(type) 
    FROM `car` 
    INNER JOIN owner 
    ON car.owner= tulajdonos.id 
    WHERE 2018 - owner.birth_date >= 25
    order by count(type) desc, type

如果你确定没有领带。
此外,你确定年龄的方法也不完美,你可以使用以下方法:

WHERE 
case
    when DATEPART(DY, owner.birth_date) > DATEPART(DY, GETDATE())
        then DATEDIFF(YYYY, owner.birth_date, GETDATE()) - 1
    else DATEDIFF(YYYY, owner.birth_date, GETDATE())
end >= 25

相关问题