代码之家  ›  专栏  ›  技术社区  ›  yossi

SQL搜索,在表中搜索a | b | c | d,并返回按记录中元素数排序的结果

  •  0
  • yossi  · 技术社区  · 14 年前

    问题是:

    天数记录为:

    Sunday, Monday, Wednesday
    

    {eat,sunday},
    {sleep,sunday},
    {write,sunday},
    {drink,sunday}
    
    {eat,wednesday},
    {sleep,wednesday},
    {write,wednesday},
    
    {eat,monday},
    {sleep,monday},
    

    我想在ACTIONS中搜索窗帘操作数最多的天数,并返回从高到低排序的结果。 sunday, wednesday, monday.

    3 回复  |  直到 13 年前
        1
  •  1
  •   gianebao Charitha    14 年前
    select 
        day_name, count(day_name) qty
    from
        actions
    where 
        name in ('eat', 'sleep', 'write', 'drink')
    group by day_name
    order by qty desc
    
        2
  •  2
  •   Adam Matan    14 年前
    SELECT d.name
        FROM ACTIONS a JOIN DAYS d ON a.day_name=d.name
            WHERE a.name IN ('eat', 'sleep', 'write', 'drink')  -- Your search
                GROUP BY a.name
                    ORDER BY COUNT(*) DESC;
    
        3
  •  2
  •   Yves M.    14 年前

    你在找这个。。。

    SELECT day_name, number FROM
    (
      SELECT day_name, COUNT(*) 
      FROM ACTIONS 
      WHERE name in ('eat', 'sleep', 'write') 
      GROUP BY day_name
    ) AS Test
    ORDER BY number DESC