选择所有大于某个值的列

德克斯特

我是mysql的新手,我具有这样的结构

timestamp | Name | Total | Student1 | Student2 | Student3
20150911  | X    | 100   |       76 |       10 |       NA
20151111  | Y    | 70    |       NA |        0 |       23

现在我想用mysql查询选择给定的“时间戳”在哪里

  • 具有非零数字的所有学生列
  • 所有不适用的学生专栏
  • 所有为零的学生列

预期结果

  • 如果我输入“非零”查询,则应将列的名称指定为时间戳20150911的“ Student1,Student2”
  • 如果我输入“零”查询,则应将列名称指定为()作为时间戳20150911
  • 如果我输入“ NA”查询,则应为时间戳20150911将该列的名称指定为“ Student3”

我已经尝试过搜索这种混合选择,但到目前为止,我还没有成功。大多数答案都集中在行选择而不是列上。

卢卡斯·索佐达(Lukasz Szozda)

您的数据结构未规范化。但是,如果您想走这条路,请使用:

select sub.student
FROM (
  select t.timestamp,
    t.Name,
    t.Total,
    c.col AS student,
    case c.col
      when 'Student1' then Student1
      when 'Student2' then Student2
      when 'Student3' then Student3
      -- ...
    end as d
  from mytable t
  cross join
  (
    select 'Student1' as col
    union all select 'Student2'
    union all select 'Student3'
    -- ...
  ) c
) AS sub
WHERE sub.timestamp = '20150911'
  AND sub.d > 0;
  -- sub.d = 'NA'
  -- sub.d = 0

SqlFiddleDemo

输出:

╔══════════╗
║ student  ║
╠══════════╣
║ Student1 ║
║ Student2 ║
╚══════════╝

如果要用逗号分隔结果,请使用:

select GROUP_CONCAT(sub.student ORDER BY sub.student) AS result

SqlFiddleDemo2

输出:

╔═══════════════════╗
║       result      ║
╠═══════════════════╣
║ Student1,Student2 ║
╚═══════════════════╝

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在 R 中,如何选择/子集值大于某个值的站点,然后保留包含小于所选值的值的所有站点?

Microsoft Excel如何选择满足特定条件(即大于某个值)的所有单元格

选择值大于pandas中另一列的所有列名称

PostgreSQL:选择连续大于某个值的行

在熊猫数据框中选择所有大于数字的值

在pandas中选择值大于0的所有列名

如何扫描pandas数据框以查找所有大于某个值的值,并返回对应于该值的行号和列号?

选择所有字段(日期时间),其中小时大于某个小时并且当天只是当天

获取列值大于或等于特定值的所有行

选择X列的总和大于或等于Y的所有行

检查列表中的所有值是否都大于某个数字

替换Python NumPy数组中大于某个值的所有元素

使用表单显示某个值大于 X 的所有记录

选择值大于 0 的列

逐行查找数据框中某个值的所有列

Excel:选择左侧大于或小于某个值的单元格

在 Teradata 中选择时间间隔大于某个值的记录

通过检查所有后继元素节点值是否都大于某个固定值来输出XML节点?

从表中选择外键,其中所有具有相同外键的行中的列值之一大于给定值

聚合列值并保持值大于某个数字

确保所有矢量分量都大于某个数量

用bash杀死PID大于某个整数的所有任务

TreeMap删除大于某个特定键的所有键

SQL如何选择所有值都高于某个值的数据

动态选择所有列,但从以某个单词开头的列中排除所有列,但保留一个

是否可以选择所有属性值大于特定数量的元素?

如果一列中的值超过某个值,则删除 2 列中的所有行

Teradata/SQL,选择所有行,直到每个分区达到某个值

如何在树状图中选择低于某个截止值的所有簇,在 r