小编Ken*_*Ken的帖子

当你的别名是什么时,你可以用一个案例进行GROUP BY吗?

我有一个SELECT语句是从一个CASE WHEN THEN状态(或者可以使用多个IF语句)别名为'Length'计算的,我需要正确地将结果组合在一起.SELECT似乎正在工作,但该组将它们分组错误.这是我的发言:

SELECT CASE 
    WHEN DATEDIFF(o.EndDate, o.StartDate) < 30 THEN '<1 Month'
    WHEN DATEDIFF(o.EndDate, o.StartDate) < 90 THEN '1 - 2 Months'
    WHEN DATEDIFF(o.EndDate, o.StartDate) < 210 THEN '3 - 4 Months'
    ELSE '>4 Months' END AS 'Length', 
    COUNT(DISTINCT(person.ID)) AS 'COUNT'
FROM person
    INNER JOIN opportunity AS o
    INNER JOIN Organization AS org
    ON person.EntityID = o.id 
        AND O.OrganizationID = Org.ID
WHERE person.TitleID = 2
    AND o.bID = 1
GROUP BY 'Length'
ORDER BY 'Length' ASC;
Run Code Online (Sandbox Code Playgroud)

这将所有结果分组为'3 - 4个月',这是不对的..

mysql sql group-by case

24
推荐指数
1
解决办法
3万
查看次数

MySQL - 在CASE中组合多个WHEN条件

我正在尝试使用下面的CASE子句将2行结果合并为1.'<26'应该只出现一次,结果应该合并.

SELECT  
    CASE org.size
        WHEN 0 THEN '<26'
        WHEN 1 THEN '<26'
        WHEN 2 THEN '26-50'
        WHEN 3 THEN '51-100'
        WHEN 4 THEN '101-250'
        WHEN 5 THEN '251-500'
        WHEN 6 THEN '501-1000'
        WHEN 7 THEN '1001-5000'
        ELSE '5000+' END
        AS 'Size',
        COUNT(DISTINCT org.id) AS '# of Companies'
FROM org INNER JOIN usr ON usr.orgid = org.id
    INNER JOIN usr_role ON usr.id = usr_role.usrid
WHERE org.deleted = 0 AND usr.brnd = 1 AND usr_role.role = 1
GROUP BY org.size;
Run Code Online (Sandbox Code Playgroud)

mysql sql

18
推荐指数
1
解决办法
4万
查看次数

mysql选择每组前n行

我读过这篇文章:http://www.xaprb.com/blog/2006/12/07/how-to-select-the-firstleastmax-row-per-group-in-sql/并搜索其他问题

我有一个表格,如:

| table.id    | USER.id
----------------------------------------------
| 1           | 101
| 2           | 101
| 3           | 101
| 4           | 101 
| 5           | 101
| 6           | 101
| 7           | 101 
| 8           | 101
| 9           | 101 
| 10          | 101
| 11          | 102
| 12          | 102 
| 13          | 102
| 14          | 102
| 15          | 103 
| 16          | 103
| 17          | 103
| …
Run Code Online (Sandbox Code Playgroud)

mysql sql group-by

6
推荐指数
1
解决办法
9564
查看次数

MySQL - 列名已经命名为'TimeStamp',需要在Where子句中使用它

编写此查询的正确方法是什么?我的customers表中有一个名为TimeStamp的列.我在2012年尝试找到创建帐户的客户时遇到错误.我尝试过:

SELECT 'TimeStamp' AS CreatedDate
FROM customers
WHERE 'CreatedDate' >= '2012-01-01' AND 'CreatedDate' <= '2012-12-31'
Run Code Online (Sandbox Code Playgroud)

并且

SELECT *
FROM customers
WHERE 'TimeStamp' >= '2012-01-01' AND 'TimeStamp' <= '2012-12-31'
Run Code Online (Sandbox Code Playgroud)

并且总是没有结果(应该有数千)

mysql sql linqpad

4
推荐指数
1
解决办法
2888
查看次数

Google 表格 - 按 If/Then 存储桶、计算值进行分组

在Google表格中,我试图编写一个查询(不是独立的数据透视表或脚本),它根据基于if/then语句的计算值进行分组。

这是我的示例数据:

Name    Days
Bob     0
Ed      1
Frank   2
Joey    4
Deluth  7
Henry   12
Run Code Online (Sandbox Code Playgroud)

按 B 列分组相当简单:

=QUERY(A1:B7,"SELECT B, COUNT(B) GROUP BY B")
Run Code Online (Sandbox Code Playgroud)

其输出:

Days    count
0       1
1       1
2       1
4       1
7       1
12      1
Run Code Online (Sandbox Code Playgroud)

但我想做的是将这些日子分组到特定的桶中。存储桶和所需的输出将是所需的输出

Days    count
0       1
1       1
2-5     2
6-9     1
10+     1
Run Code Online (Sandbox Code Playgroud)

所以它几乎是“如果 0 那么 '0',如果 1 那么 '1',如果 >1 AND <=5 那么 '2-5' 等等,最后有一个 Group By?这将如何写成查询格式?

if-statement group-by google-sheets google-sheets-query

4
推荐指数
1
解决办法
7428
查看次数

您能否将2个完全不同的查询结果划分为1个结果

我正在尝试将2个完全不同的查询的数值结果相除。

最终结果应为查询1除以查询2

查询1 =

SELECT COUNT(DISTINCT(table1.ID)) AS count_1
FROM table1 
    INNER JOIN op 
    INNER JOIN Org 
    ON table1.EID = op.id 
        AND Op.OrgID = Org.ID
WHERE table1.TitleID = 123
    AND op.BrandID = 1 
    AND op.Start <= NOW() AND op.End >= NOW();
Run Code Online (Sandbox Code Playgroud)

查询2 =

SELECT COUNT(DISTINCT user.id) AS count_2
FROM table1 INNER JOIN user INNER JOIN ur
    ON table1.EID = user.id AND ur.userID = user.id
WHERE 
    user.BrandID = 1 
    AND table1.TitleID = 123
    AND ur.role = 0
    AND user.Inactive = 0;
Run Code Online (Sandbox Code Playgroud)

mysql sql inner-join division

2
推荐指数
1
解决办法
743
查看次数

MySQL - 在日期范围内按周分组结果

我有一个users存储TIMESTAMP 的表,当他们的帐户被创建时.我正在尝试编写一个查询,该查询将显示在给定时间段内按周(按周一开始)分组的新用户.导演将进入并选择报告日期范围,因此选择2个变量.他们应该看到显示所有在2个选定变量日期之间注册的新用户的结果,按周(周的周一开始)分组

变量: @StartRangeSelectDate @EndRangeSelectDate

用户表:

| id         | TIMESTAMP
----------------------------------------------
| 1          | 2013-09-02
| 2          | 2013-09-08
| 3          | 2013-09-12
| 4          | 2013-09-27
Run Code Online (Sandbox Code Playgroud)

结果应该是(当选择的开始日期类似于2013-09-01,结束日期是2013-09-29:

| YearWeek         | # of New Users
----------------------------------------------
| 2013 36          | 2
| 2013 37          | 1
| 2013 38          | 0
| 2013 39          | 1
Run Code Online (Sandbox Code Playgroud)

查询以显示日期范围中的新用户总数,但尚未在日期范围内按周分组:

SELECT COUNT(user.id) AS '# of New Users in Date Range'
FROM user 
WHERE user.Inactive = 0
    AND user.TimeStamp BETWEEN @StartRangeSelectDate AND …
Run Code Online (Sandbox Code Playgroud)

mysql sql date-range

1
推荐指数
1
解决办法
1935
查看次数

从年份和月份变量获取第一个月和最后一个月

使用MySql

我有以下变量(以"3"和"2014"为例):

SET @Month = 3;
SET @Year = 2014;
Run Code Online (Sandbox Code Playgroud)

期望的结果

I'd like to get the first day of the month and the last day of the month separately, 
using the variables (avoiding any NOW() or CURDATE() formulas), in %Y-%m-%d format. In other words:

2014-03-01
2014-03-31
Run Code Online (Sandbox Code Playgroud)

我已经尝试了以下基本功能的许多可能性,加上一些我已删除

SELECT LAST_DAY(`SELECT(@Year)-03-01`)
SELECT LAST_DAY('@Year-@Month')
SELECT DATE_FORMAT(?, '%Y-%m-01')
Run Code Online (Sandbox Code Playgroud)

mysql variables time date

1
推荐指数
1
解决办法
996
查看次数