MySQL查询非数字值

MySQL查询非数字值,mysql,text,max,average,Mysql,Text,Max,Average,我正在寻找一个函数来返回表中最主要的非数值 我的数据库表记录了气象站的读数。其中许多是数字,但风向记录为16个文本值之一-N、NNE、NE、ENE、E。。。在varchar字段中执行etc。记录每15分钟添加一次,因此95行代表一天的天气 我在计算当天的主要风向。您可以手动将Ns、NNE、NE等的数量相加,然后查看其中的大多数 MySQL有没有一个简洁的方法来实现这一点 谢谢以下查询将返回风向列表以及按大多数事件排序的计数: SELECT wind_dir, COUNT(wind_dir) AS

我正在寻找一个函数来返回表中最主要的非数值

我的数据库表记录了气象站的读数。其中许多是数字,但风向记录为16个文本值之一-N、NNE、NE、ENE、E。。。在varchar字段中执行etc。记录每15分钟添加一次,因此95行代表一天的天气

我在计算当天的主要风向。您可以手动将Ns、NNE、NE等的数量相加,然后查看其中的大多数

MySQL有没有一个简洁的方法来实现这一点


谢谢

以下查询将返回风向列表以及按大多数事件排序的计数:

SELECT wind_dir, COUNT(wind_dir) AS count FROM `mytable` GROUP BY wind_dir ORDER DESC

希望这有帮助

在没有看到您的模式的情况下,很难回答您的问题,但这应该会对您有所帮助

假设风向与要忽略的数值存储在同一列中,则可以使用忽略数值,如下所示:

select generic_string, count(*)
from your_table
where day = '2014-01-01'
and generic_string not regexp '^[0-9]*$'
group by generic_string
order by count(*) desc
limit 1
如果风向是列中存储的唯一内容,那么就简单一点:

select wind_direction, count(*)
from your_table
where day = '2014-01-01'
group by wind_direction
order by count(*) desc
limit 1
您可以使用子查询在多天内执行此操作。例如,假设您将来没有任何数据,此查询将为您提供当月每天最常见的风向:

select this_month.day,
(
  select winddir 
  from weatherdatanum 
  where thedate >= this_month.day
  and thedate < this_month.day + interval 1 day
  group by winddir
  order by count(*) desc
  limit 1
) as daily_leader
from
(
  select distinct date(thedate) as day
  from weatherdatanum
  where thedate >= concat(left(current_date(),7),'-01') - interval 1 month
) this_month

你可以将风向定义为一个枚举,这样在后端你又可以得到整数了。太棒了!第二个选项很好,因为wind_dir有自己的列。你能帮我把这个稍微延长一点吗。我想返回整个月的每日值。这是您的代码加上我的修改,但效果不太好:选择日期、winddir、weatherdatanum中的count,其中MonthDate=dateformatnow、mm group by winddir、yearthedate、MonthDate、,daythedate order by count desc limit 1日期列的数据类型是什么?它是datetime,如果dateformatnow,mm看起来不熟悉,则使用Coldfusion对站点进行编码。谢谢我将编辑我的答案,包括一个计算当前月份所有天数的每日领导者的示例。这太完美了-非常感谢您的及时和专家帮助。您可以在这里看到输入的结果:再次感谢。感谢您的时间!最美好的祝福。