❶ MYsql 多數據 聯合查詢 ORDER BY ,COUNT() 速度慢,求改SQL
selectl.f_id,l.f_lecturer_name,l.f_user_id,l.f_user_name,l.f_skill,l.f_train_number,l.f_course_number,l.f_train_student_number,sum(casewhencl.f_creditisnullthen0whencl.f_creditisnotnullthencl.f_creditend)ascredit,l.f_fractionfromt_lecturerlleftjoint_credit_logcloncl.f_type=2andcl.f_user_id=l.f_user_idgroupbyl.f_user_idorderbyl.f_fractiondescLIMIT0,20
能幫我看看嘛?在oracle中報錯了 979: ORA-00979: 不是 GROUP BY 表達式
❷ sql count排序的語句
Count排序語法如下:
Select * from (Select Count(欄位名) as 別名 from 表名 Group By 欄位名) as [查詢1] order by [查詢1].欄位
Count語句不支持where和order by,把他先整理成一個查詢,再去排列篩選就好了。
❸ sql語言order by後面跟一個計算出的結果
如果是在SQLSever中用那條語句查詢的話,把WHERE後面的那個等號要改成 *= (即左連接)試試。
比較困惑的一點是,COUNT()用來統計元組的個數,你Order by後面加個COUNT()統計出來的數值,那是什麼意思??Order by用對查詢結果按照一個或多個屬性列的升序(ASC)或降序(DESC)進行排列的啊。注意是對屬性列,而不是對一個具體的數值進行排序的啊。。。
❹ sql選擇哪個系學生借書最多 怎麼寫
select top 1 department
from borrow,card
where borrow.cno=card.cno
grooup by department
order by count(*) desc
❺ SQL中count(*) as人數 排序時 order by 人數還是order by count(*)為什麼
你好!
在同一條搜索語句中,可以用年齡,把year(date())-year(出生日期)的別名看做「年齡」
oracle語句中是沒有as的
SQL中count(*)
as人數
排序時
order
by
人數還是order
by
count(*)?
答:order
by
你必須明白是按什麼牌的,desc,asc等
僅代表個人觀點,不喜勿噴,謝謝。
❻ SQL2000 查詢資料庫中表的記錄數,並按照從多到少的順序排列
假設student表有兩個欄位:name和age,張三是20歲,李四是21歲,王五是22歲
SQL語句:select * from student order by age desc
查詢結果:王五 22
李四 21
張三 20
SQL語句:select * from student order by age
查詢結果:張三 20
李四 21
王五 22
第二條sql語句沒有加desc,默認是升序:asc
還是沒看明白你的問題,難道是查詢某個資料庫中的每張表的記錄行數?但你說的是列數!建議你還是直接寫SQL語句上來!
江湖三腳貓同志寫的語句還是不錯的,但估計是沒有執行過的sql語句,真正執行,可能會有一點小瑕疵,order by count 的前提是有count這個列名,這條sql語句執行的話,列名應該是「count(*)」之類的吧?oracle中是這樣的,SQL Server不記得了,貌似也是這樣的列名,所以建議寫成 select count(1) as count 這個樣子,這樣一來,再order by count就肯定沒問題了。
我是覺得不用存儲過程,用SQL語句就可以實現,只不過用一個嵌套式的sql罷了,建議提問的這位兄弟自己琢磨一下,或者將問題描述清楚,否則真的是 愛莫能助,good luck !
❼ SQL優化問題:select count(*) from test where col3 >= 5 group by col1 order by count(*);
欄位名,表名,資料庫名之類作為變數時,必須用動態sql
eg:
declare
@fname
varchar(20)
set
@fname
=
'filedname'
select
@fname
from
tablename
--
錯誤,不會提示錯誤,但結果為固定值filedname,並非所要。
exec('select
'
+
@fname
+
'
from
tablename')
--
請注意
加號前後的
單引號的邊上加空格
當然將字元串改成變數的形式也可
declare
@fname
varchar(20)
set
@fname
=
'filedname'
--設置欄位名
declare
@s
varchar(1000)
set
@s
=
'select
'
+
@fname
+
'
from
tablename'
exec(@s)
--
成功
exec
sp_executesql
@s
--
此句會報錯
declare
@s
nvarchar(1000)
--
注意此處改為nvarchar(1000)
set
@s
=
'select
'
+
@fname
+
'
from
tablename'
exec(@s)
--
成功
exec
sp_executesql
@s
--
此句正確
就寫這么多了!希望對你有所幫助
❽ sql中order by和group by的區別
1、意思不一樣。
order by 是指從英文里理解就是行的排序方式,默認的為升序。後面必須列出排序的欄位名,可以是多個欄位名。
group by 是指從英文里理解就是分組。必須有「聚合函數」來配合才能使用,使用時至少需要一個分組標志欄位。
2、適用范圍不同:order by 用於排序,一般與asc升序或desc降序一起使用。例如select * from 表A order by 列a。
group by 用於分類匯總,一般與聚合函數(比如avg平均、sum合計、max最大、min最小、count計算行)一起使用。例如select 月份,sum(工資)as 總工資 from 工資表 group by 月份。
3、定義不同:order by主要側重許多數據的排序,例如按照大小順序對數據進行排列,group by主要側重許多數據的分組,例如按照性別、年齡、國家、學科等進行分組。
4、使用的函數不一樣。
order by子句中的列必須包含在聚合函數或 GROUP BY 子句中。
group by 子句中可使用的函數AVG() 、MIN() 、 MAX() 、SUM() 、COUNT() 。
5、order by從英文里理解就是行的排序方式,默認的為升序。order by後面必須列出排序的欄位名,可以是多個欄位名。
group by從英文里理解就是分組。必須有「聚合函數」來配合才能使用,使用時至少需要一個分組標志欄位。
(8)sqlorderbycount擴展閱讀
Microsoft Jet資料庫引擎SQL 數據類型 由13個基本數據類型組成,它們是由 Microsoft Jet 資料庫引擎和幾個驗證過的有效同義字定義的。常見的有:整形,單精度,雙精度,可變長度字元,固定長度字元,長型,日期等等。
可以用ALTER TABLE 語句修正基數和增量。剛插進表中的行會有自動為基於新種值和增量值的列生成的值。如果新種和增長的值和以前的種值及增量匹配,就會造成復制。如果這個列是主鍵,復制值生成時可能導致錯誤。
定義成TEXT也稱作MEMO)或CHAR(也稱作有具體長度的 TEXT(n))的欄位中的字元被儲存在 Unicode 表示格式。
Unicode字元一律需要兩個位元組存儲每一字元。對於現有的主要包含字元數據的 Microsoft Jet資料庫,這可能意味著資料庫文件被轉換成 Microsoft Jet 4.0格式時字長會增加將近一倍。
然而,從前由單位元組字元群(SBCS)指示的眾多字元群的Unicode 表示可以很容易地被壓縮成一個單位元組。有關的詳細信息,參見CREATE TABLE。如果用COMPRESSION屬性定義CHAR列,數據存儲時會自動被壓縮,提取時解壓縮。
❾ sql查詢語句 給出4張表,找出雇員最多的公司
mysql
select company_name, count(employee_name) employee_count
from works
group by company_name
order by count(employee_name) desc limit 1,1
sql server
select top 1 company_name, count(employee_name) employee_count
from works
group by company_name
order by count(employee_name) desc
❿ SQL中count(*) as人數 排序時 order by 人數還是order by count(*)為什麼
order by 人數
因為先把數據查出來,且把count(*)命名為人數,然後才進行排序的.
order by在select後