Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
缺少SQL百分位函数?_Sql_Oracle_Function - Fatal编程技术网

缺少SQL百分位函数?

缺少SQL百分位函数?,sql,oracle,function,Sql,Oracle,Function,这本教科书的例子对我来说是个谜。我们只是: Transaction_ID (primary key), Client_ID, Transaction_Amount, Month 1 1 500 1 2 1 1000 1 3 1 10 2 4 2

这本教科书的例子对我来说是个谜。我们只是:

Transaction_ID (primary key),   Client_ID,  Transaction_Amount, Month

1                   1       500         1   
2                   1       1000            1
3                   1       10          2
4                   2       11          2
5                   3       300         2
6                   3       10          2
...                 ...     ...         ...
我想在SQL中计算平均值(交易金额)、std(交易金额)和按客户ID分组的某个百分位数(交易金额)。但似乎,即使百分位数的计算与标准偏差非常相似,SQL也无法使用以下简单语句:

SELECT
    mean(Transaction_Amount),
    std(Transaction_Amount),
    percentile(Transaction_Amount) 
FROM
    myTable
GROUP BY
    Client_ID, Month
或者可以吗

更糟糕的是,除了客户ID外,我还需要按月分组

非常感谢! Sven

我相信Oracle可以完成您想要的计算。我只是不知道它们是什么。您指定要按
ClientId
对某些内容进行分组。但是,您的示例查询在
GROUP BY
中有两个键

您要查看的一些功能包括:

  • AVG()
  • STDDEV()
  • PERCENT\u RANK()

如果没有样本数据和所需的结果(或对您试图计算的内容的非常清楚的解释),我无法组合查询。

这在很大程度上取决于数据库。请用您正在使用的数据库标记您的问题。Gordon Lightfoot的意思是,您使用的是SQL Server、Oracle、MongoDB、MagicPlatypus还是什么?至少,如果SQL Server看到更糟的情况,则有不止一种类型的百分位数。如果您的数据库引擎的功能不能满足您的业务需求(我也遇到过这种情况),您需要一个不同的计划。我被迫使用SAS proc sql…..我可以告诉您。这是SAS BI Enterprise 5.1。您正在寻找该功能吗?