Генерация гистограммы от значений столбцов в базе данных

Поместите следующие строки в файл с именем ColourText.bas на рабочем столе.

Imports System
Imports System.IO
Imports System.Runtime.InteropServices
Imports Microsoft.Win32

Public Module MyApplication  
Public Declare Function GetStdHandle Lib "kernel32" Alias "GetStdHandle" (ByVal nStdHandle As Long) As Long
Public Declare Function SetConsoleTextAttribute Lib "kernel32" Alias "SetConsoleTextAttribute" (ByVal hConsoleOutput As Long, ByVal wAttributes As Long) As Long
Public Const STD_ERROR_HANDLE = -12&
Public Const STD_INPUT_HANDLE = -10&
Public Const STD_OUTPUT_HANDLE = -11&

Sub Main()
    Dim hOut as Long
    Dim Ret as Long
    Dim Colour As Long
    Dim Colour1 As Long
    Dim Text As String
    hOut  = GetStdHandle(STD_OUTPUT_HANDLE)
    Colour = CLng("&h" & Split(Command(), " ")(0))
    Colour1 = Clng("&h" & Split(Command(), " ")(1))
    Text = Mid(Command(), 7)
    Ret = SetConsoleTextAttribute(hOut,  Colour)
    Console.Out.WriteLine(text)
    Ret = SetConsoleTextAttribute(hOut, Colour1)
End Sub
End Module

Сохраните его и введите в командной строке следующее:

"C:\Windows\Microsoft.NET\Framework\v4.0.30319\vbc.exe" /target:exe /out:"%userprofile%\desktop\ColourText.exe" "%userprofile%\desktop\ColourText.bas" /verbose

A файл ColourText.exe появится на вашем рабочем столе. Переместите его в папку Windows.

Для использования вы должны использовать два символьных кода для установки цвета, например 01, а не 1.

ColourText ColourOfText ColourOfTextWhenFinished Text

EG Чтобы установить синий цвет на белый, не передавая ни одного текста, затем красным цветом на белом тексте, заканчивая синим цветом на сером.

ColourText F1 F1
ColourText F2 71 This is green on white

или

ColourText F1 F1
cls
ColourText F4 F4
Echo Hello
Echo Hello today
ColourText F1 F1

Также интересна команда CLS. Color команда без параметров сбрасывает все цвета в цвета запуска.

Чтобы получить код цвета, добавьте следующие числа вместе. Используйте калькулятор в режиме программистов. Это шестнадцатеричные числа. Они могут быть добавлены вместе, например, Red + Blue + FG Intensity = 13 = D. Поскольку 10+ не использовался, фон будет черным. Цветовые коды ДОЛЖНЫ быть двумя символами, например 08 не 8.

FOREGROUND_RED = &H4     '  text color contains red.
FOREGROUND_INTENSITY = &H8     '  text color is intensified.
FOREGROUND_GREEN = &H2     '  text color contains green.
FOREGROUND_BLUE = &H1     '  text color contains blue.
BACKGROUND_BLUE = &H10    '  background color contains blue.
BACKGROUND_GREEN = &H20    '  background color contains green.
BACKGROUND_INTENSITY = &H80    '  background color is intensified.
BACKGROUND_RED = &H40    '  background color contains red.
24
задан Thorsten79 27 January 2009 в 21:52
поделиться

4 ответа

SELECT COUNT(grade) FROM table GROUP BY grade ORDER BY grade

не проверили его, но это должно работать. Это, однако, не покажет счет для 6 классов с, так как это не присутствует в таблице вообще...

32
ответ дан 28 November 2019 в 23:03
поделиться

Используйте временную таблицу для получения отсутствующих значений:

CREATE TABLE #tmp(num int)
DECLARE @num int
SET @num = 0
WHILE @num < 10
BEGIN
  INSERT #tmp @num
  SET @num = @num + 1
END


SELECT t.num as [Grade], count(g.Grade) FROM gradeTable g
RIGHT JOIN #tmp t on g.Grade = t.num
GROUP by t.num
ORDER BY 1
7
ответ дан 28 November 2019 в 23:03
поделиться

Использование Gamecat ОТЛИЧНЫХ кажется немного нечетным мне, должен будет испытать его, когда я вернулся в офисе...

способ, которым я сделал бы это, похож хотя...

SELECT
    [table].grade        AS [grade],
    COUNT(*)             AS [occurances]
FROM
    [table]
GROUP BY
    [table].grade
ORDER BY
    [table].grade

Для преодоления отсутствия данных, где существует 0 происшествий Вы можете ОСТАВЛЕННОЕ СОЕДИНЕНИЕ на таблице, содержащей все допустимые классы. КОЛИЧЕСТВО (*) рассчитает, АННУЛИРУЕТ, но КОЛИЧЕСТВО (класс) не будет считать ПУСТЫЕ УКАЗАТЕЛИ.

DECLARE @grades TABLE (
   val INT
   )  

INSERT INTO @grades VALUES (1)  
INSERT INTO @grades VALUES (2)  
INSERT INTO @grades VALUES (3)  
INSERT INTO @grades VALUES (4)  
INSERT INTO @grades VALUES (5)  
INSERT INTO @grades VALUES (6)  

SELECT
    [grades].val         AS [grade],
    COUNT([table].grade) AS [occurances]
FROM
    @grades   AS [grades]
LEFT JOIN
    [table]
        ON [table].grade = [grades].val
GROUP BY
    [grades].val
ORDER BY
    [grades].val
3
ответ дан 28 November 2019 в 23:03
поделиться
select Grade, count(Grade)
from MyTable
group by Grade
2
ответ дан 28 November 2019 в 23:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: